【发布时间】:2014-09-12 14:57:04
【问题描述】:
我一直在尝试找到一种方法,通过更新面板将流程的增量反馈传递给 UI。我正在尝试实现的一个基本示例如下:
protected void DoSomething(object sender, EventArgs e) {
for(int i=0; i < 10; i++){
//Pretend to do something intensive
Thread.Sleep(1000);
//Output the progress of the process to a label
Label.Text = i.ToString();
}
}
我的示例中的 aspx 标记很简单:
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Button1" />
</Triggers>
<asp:Button ID="Button1" runat="server" OnClick="DoSomething" Text="Push Me"/>
但是,当按下 Button1 时,UpdatePanel 不会增量更新,而是仅在循环完成时显示数字 9。
我相信这是因为在服务器端代码完成(即循环停止循环时)之前不会触发回发。
有没有一种方法可以使用服务器端代码和更新面板实现所需的功能?
提前致谢! :)
【问题讨论】:
标签: c# asp.net webforms updatepanel