在长代码隐藏过程中更改标签文本
本文关键字:标签 文本 过程中 代码 隐藏 | 更新日期: 2023-09-27 18:28:00
我有Label
和Button
在一个UpdatePanel
中,现在我用ForEach
循环调用Long Process On Button Click
我想要的是在循环完成后更新Label
的文本。有什么简单的方法可以在运行时更改Label
的文本吗。我听说我们可以用Iframe
做这件事,但我对此一无所知。
代码
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();
}
}
所以,我想在运行时显示标签的更改。。。。。
如果我做对了,服务器只在方法完成后返回,但您希望客户端标签在完成时显示当前已完成的项目计数。
我想提一下它的一个问题。每次回复大约需要200-400毫秒,所以它不会很快更新。我强烈建议考虑每隔一段时间更新一次,而不是尝试为完成的每一项工作进行更新。
为了实现这一点,您必须在不同的线程上运行函数循环(让它修改一个变量)。Add让客户端使用js定时器检查其状态(返回变量的值)。
换句话说,你要做的就是向客户展示进度。在这种情况下,以下链接可能很有用。
使用ASP.NET AJAX 的实时进度条
注意:它返回百分比。您可以将其更改为返回计数的方式。
以上链接取自以下问题。这在很多方面都是相关的问题。
ASP.NET AJAX进度条:从代码隐藏更新?
MyLabel.Text = "The process has completed.";
只需确保此标签也包含在更新面板中,并且当进程在服务器端完成并返回到客户端时,它应该进行更新。
这应该相当简单。
示例:
protected void button1_Click(object sender, EventArgs e)
{
foreach (var a in loopItems)
{
DoMyWork(a);
}
label1.Text = "Complete";
}