更新循环ASP.Net Web窗体C#中的更新面板

时间:2014-09-12 14:57:05

标签: c# asp.net webforms updatepanel

我一直在尝试找到一种方法,通过更新面板将流程的增量反馈传递给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。

我相信这是因为在服务器端代码完成之前没有触发回发(即循环停止循环时)。

有没有办法可以使用服务器端代码和更新面板实现所需的功能?

提前致谢! :)

1 个答案:

答案 0 :(得分:0)

您可以做的是,在设计模式下创建一个计时器对象(或在您的html代码中打卡),并为该计时器添加一个异步触发器。这个链接将为您提供很多帮助!

http://msdn.microsoft.com/en-us/library/vstudio/bb386404(v=vs.100).aspx

换句话说,计时器将在您设置的时间间隔内触发面板更新:) 在后面的代码中,每次定时事件,您都会更新您的更新面板w /增量值。