我正在使用 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
答案 0 :(得分:2)
您无法将更新从服务器推送到浏览器。 Update
方法的作用是在AJAX响应中包含更新面板的内容,因此要产生任何效果,必须返回到浏览器的响应。
如果您希望在服务器上运行冗长的进程并在浏览器中获取更新,则必须在单独的线程中启动该进程,以便主线程可以完成并将响应返回给浏览器。然后浏览器可以对服务器进行回发或AJAX调用,并向后台线程询问进度状态。