在c#web表单中以编程方式更改标签文本
我在网上搜索了一遍又一遍,这似乎很简单,但不知怎么的,它不起作用 我正在尝试用C#创建一个web表单应用程序。 Button1应该从网站下载大量数据,我希望Label1在Button1中的代码运行时显示“下载”,在代码完成后显示“完成”,但单击按钮后Label1根本不会改变 代码如下:在c#web表单中以编程方式更改标签文本,c#,label,C#,Label,我在网上搜索了一遍又一遍,这似乎很简单,但不知怎么的,它不起作用 我正在尝试用C#创建一个web表单应用程序。 Button1应该从网站下载大量数据,我希望Label1在Button1中的代码运行时显示“下载”,在代码完成后显示“完成”,但单击按钮后Label1根本不会改变 代码如下: protected void Button1_Click(object sender, EventArgs e) { Label1.Text = "downloading"
protected void Button1_Click(object sender, EventArgs e)
{
Label1.Text = "downloading";
//code for downloading data
Label1.Text = "done";
}
那是行不通的。这些都是服务器端代码。在按钮单击处理程序完成执行之前,更新的HTML不会发送回浏览器。因此,浏览器将只看到“完成”标签文本。永远不要“下载”文本
实现所需效果的最简单方法是在提交表单之前使用客户端javascript(可能使用jquery)将标签文本更新为“下载”。您可以将客户端javascript放在asp.net按钮的OnClientClick属性中。然后,服务器端代码可以下载数据并将标签文本更改为done 我不知道这是否仍然有用,因为这篇文章已经很老了,但我在寻找我自己问题的答案时偶然发现了这个问题
protected void Button1_Click(object sender, EventArgs e)
{
Label1.Text = "downloading";
//code for downloading data
Label1.Text = "done";
Label1.Refresh;
}
更改标签文本后,只需使用Label1.Update()函数。如果要将文本从下载更改为完成,则可以执行以下操作:
Label lbl = (Label)this.FindControl("Label1");
if (lbl != null)
{
lbl.Text = "done";
}
你确定“Label1”是正确的吗?另外,数据下载是否正确,或者整个功能是否不起作用?