UpdatePanel.Update(),似乎什么也没发生

时间:2009-10-01 09:05:17

标签: c# asp.net ajax asp.net-ajax updatepanel

我正在使用 UpdatePanel ,我想在服务器端以编程方式刷新。原因是我显示了一些需要很长时间才能加载的数据,因此我需要同时显示页面和某些进度。

我在一个包含一个UpdatePanel和一个ScriptManager的页面上执行了以下操作:

protected void Page_Load(object sender, EventArgs e)
{
    if(scriptManager.IsInAsyncPostBack)
        testLabel.Text = "AfterUpdate";
    else
        jobsUpdatePanel.Update();
}

这不是我想要做的:我想要要显示的页面并立即触发UpdatePanel的异步更新以便加载数据 - 这就是我的意思而不是将另一个愚蠢的文本分配给testLabel

这是UpdatePanel的标记(为了便于阅读,保留了ContentTemplete):

<asp:UpdatePanel ID="jobsUpdatePanel" UpdateMode="Conditional" ChildrenAsTriggers="true" runat="server">

根本没有进行回发。任何人都可以暗示我做错了吗?

的Matthias

1 个答案:

答案 0 :(得分:2)

您无法将更新从服务器推送到浏览器。 Update方法的作用是在AJAX响应中包含更新面板的内容,因此要产生任何效果,必须返回到浏览器的响应。

如果您希望在服务器上运行冗长的进程并在浏览器中获取更新,则必须在单独的线程中启动该进程,以便主线程可以完成并将响应返回给浏览器。然后浏览器可以对服务器进行回发或AJAX调用,并向后台线程询问进度状态。