使用AJAX在页面加载时使用Fire Async方法

时间:2008-10-02 12:31:17

标签: .net ajax asynchronous

我正在使用ASP.NET 2.0和AJAX Extensions(1.0?),我想知道是否可以异步调用方法并在加载后在页面上填充结果。

我有一个gridview,它由一个运行时间相当长的SQL查询填充。我希望页面出现并且结果会从服务器返回时返回,而不是强迫用户盯着空白页直到所有内容都被处理完毕。

2 个答案:

答案 0 :(得分:1)

您可以使用asp:UpdatePanel并在其中插入gridview。他们只是在加载期间调用AJAX调用。您使用Sys.Application.load事件。请在此处查看更多信息:http://www.asp.net/ajax/documentation/live/overview/AJAXClientEvents.aspx

答案 1 :(得分:0)

您可以在更新面板中放置一个隐藏按钮,并对该按钮执行PostBack。 不是一个优雅的解决方案,但它工作正常。

在您的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 Timer并在第一个Tick上禁用它,但有时我会在执行代码之前收到多个tick,所以我放弃了该解决方案。