2012-03-14 132 views
0

我有LabelButton在一个UpdatePanel,现在我叫龙工艺与ForEachOn Button Click我想是更新文本Label完成Loop.Is有任何简单的方法后更改Label的文本在运行时,我听到了一些我们可以用Iframe来做到这一点但我对此没有任何想法。更改标签文本

CODE

ASPX

<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> 

aspx.cs

protected void ButtonUpdate_Click(object sender, EventArgs e) 
{ 
    int count = 0; 
    foreach() 
    { 
     do my stuff(); 
     count = count + 1; 
     LabelUpdateCount.Text = count.ToString(); 


    } 
} 

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

+0

请显示一些源代码...你试过了什么?什么不工作? – Yahia 2012-03-14 19:35:16

回答

1

如果我能完成该方法后,才正确,服务器返回,但你希望在它正在做的客户端标签来显示当前已完成的项目数。

我想提一个问题。每回发布大约需要200-400ms,因此不会更新。我强烈建议考虑每隔一段时间更新一次,而不是试图完成每项工作的更新。

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

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

Real-Time Progress Bar With ASP.NET AJAX

注:返回百分比。你可以改变它,让它返回计数。

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

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

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

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

0

这应该相当简单。

例子:

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

    label1.Text = "Complete"; 
} 
+0

是的它已更新,但我也想显示它 – Hiren 2012-03-14 19:39:30

+0

它只显示过程完成后我想在运行时显示它 – Hiren 2012-03-14 19:40:21

+0

你是什么意思,你想显示它?方法完成后,文本应该在标签中可见。只要你在与按钮相同的更新面板中。 – Khan 2012-03-14 19:41:39