【问题标题】:Update an update panel within loop ASP.Net Web Forms C#在循环 ASP.Net Web 窗体 C# 中更新更新面板
【发布时间】: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


    【解决方案1】:

    您可以做的是,在设计模式下创建一个计时器对象(或在您的 html 代码中打孔),并向该计时器添加一个异步触发器。此链接对您有很大帮助!

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-06
      • 1970-01-01
      相关资源
      最近更新 更多