提问人: 提问时间:10/2/2008 更新时间:5/15/2009 访问量:1808
使用 AJAX 加载页面时触发异步方法
Fire Async method on page load with AJAX
问:
我正在使用带有 AJAX 扩展 (1.0?) 的 ASP.NET 2.0,并且想知道是否可以异步调用方法并在加载后将结果填充到页面上。
我有一个网格视图,它由一个运行时间相当长的 SQL 查询填充。我宁愿让页面出现,结果在从服务器返回时涓涓细流,而不是强迫用户盯着空白页面,直到一切都处理完毕。
答:
1赞
Tom
10/2/2008
#1
您可以使用 asp:UpdatePanel 并在其中插入网格视图。它们只是在加载期间调用 AJAX 调用。使用 Sys.Application.load 事件。有关更多信息,请在此处查看: http://www.asp.net/ajax/documentation/live/overview/AJAXClientEvents.aspx
0赞
nicoruy
5/15/2009
#2
您可以在更新面板中放置一个隐藏按钮,然后对该按钮进行回发。 不是一个优雅的解决方案,但它工作正常。
在你的更新面板中,你会写这样的东西。
<div style="visibility:hidden">
<asp:Button ID="btnLoad" OnClick="btnLoad_Click" runat="server"/>
</div>
在 Page_Load 事件中,必须为 PostBack 注册脚本:
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
ScriptManager.RegisterStartupScript(this, this.GetType(), "InitialLoad" + this.ClientID, Page.ClientScript.GetPostBackEventReference(btnLoad, "")+";", true);
}
}
然后,可以在 btnLoad_Click 方法(按钮的 OnClick 事件)中编写将在启动时执行的代码。
我尝试了另一种使用 AJAX 计时器的方法并在第一个 Tick 时禁用它,但有时我在执行隐藏代码之前收到多个 tick,所以我放弃了该解决方案。
评论