使用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,所以我放弃了该解决方案。