我有Label
和Button
合而为一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>
所以,我想在运行时显示标签的变化.....
答案 0 :(得分:1)
如果我做对了,服务器只在方法完成后返回,但是你希望客户端标签在完成时显示当前已完成的项目数。
我想提一下它的问题。每个帖子大约需要200-400毫秒左右,因此不会更新。我强烈建议考虑每隔一段时间更新一次,而不是尝试更新每个完成的工作。
要实现这一点,你必须在另一个线程上运行你的函数循环(让它修改一个变量)。添加让客户端使用js timer检查其状态(返回变量的值)。
换句话说,您要做的是向客户展示进度。在这种情况下,以下链接可能有用。
Real-Time Progress Bar With ASP.NET AJAX
注意:它返回百分比。您可以更改它以使其返回计数。
以上链接取自以下问题。这在很多方面都是相关问题。
答案 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";
}