使用AJAX在页面加载时触发Async方法
时间:2020-03-06 15:01:23 来源:igfitidea点击:
我正在使用带有AJAX扩展(1.0?)的ASP.NET 2.0,并且想知道是否可以异步调用方法并在加载后在页面上填充结果。
我有一个由相当长时间运行的SQL查询填充的gridview。我希望页面显示出来,结果从服务器返回时滴入,而不是强迫用户凝视空白页面,直到处理完所有内容为止。
解决方案
我们可以使用asp:UpdatePanel并在其中插入gridview。他们只是在加载过程中调用AJAX调用。我们使用Sys.Application.load事件。在此处查看更多信息:http://www.asp.net/ajax/documentation/live/overview/AJAXClientEvents.aspx
我们可以在updatepanel中放置一个隐藏按钮,然后将其回发到该按钮。
这不是一个优雅的解决方案,但效果很好。
在updatepanel内,我们将编写如下内容。
<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,所以我放弃了该解决方案。