在长代码进程中更改标签文本

时间:2012-03-14 19:33:33

标签: c# asp.net

我有LabelButton合而为一UpdatePanel,现在我使用ForEach循环On Button Click调用长流程我想要的是更新文本{在完成循环之后{1}}有任何简单的方法来改变Label的文本在运行时。我听到了一些我们可以用Label做到的事情但是我对此没有任何想法。 / p>

CODE

ASPX

Iframe

aspx.cs

    <asp:UpdatePanel ID="UpdatePanelUpdate" runat="server" UpdateMode="Conditional">     <ContentTemplate>
    <div>
    <asp:Button ID="ButtonUpdate" runat="server" Text="Update" 
        onclick="ButtonUpdate_Click" />
    <br />
    <br />
   <asp:Label ID="LabelUpdateCount" runat="server" Text=""></asp:Label>
    < /div>
   </ContentTemplate>

   </asp:UpdatePanel>

所以,我想在运行时显示标签的变化.....

3 个答案:

答案 0 :(得分:1)

如果我做对了,服务器只在方法完成后返回,但是你希望客户端标签在完成时显示当前已完成的项目数。

我想提一下它的问题。每个帖子大约需要200-400毫秒左右,因此不会更新。我强烈建议考虑每隔一段时间更新一次,而不是尝试更新每个完成的工作。

要实现这一点,你必须在另一个线程上运行你的函数循环(让它修改一个变量)。添加让客户端使用js timer检查其状态(返回变量的值)。

换句话说,您要做的是向客户展示进度。在这种情况下,以下链接可能有用。

Real-Time Progress Bar With ASP.NET AJAX

注意:它返回百分比。您可以更改它以使其返回计数。

以上链接取自以下问题。这在很多方面都是相关问题。

ASP.NET AJAX Progress Bar: Update from Code Behind?

答案 1 :(得分:0)

MyLabel.Text = "The process has completed.";

确保此标签也包含在更新面板中,并且应该在服务器端完成进程并返回到客户端时更新。

答案 2 :(得分:0)

这应该相当简单。

示例:

protected void button1_Click(object sender, EventArgs e)
{
    foreach (var a in loopItems)
    {
        DoMyWork(a);
    }

    label1.Text = "Complete";
}