我正在尝试更改主页上按钮激活的一段C#代码中的标签文本。看了here,here和here后,我理解以这种方式设置文本值......
try
{
mylabel.Text = "";
do_foo (blah);
}
catch (myexception ex)
{
mylabel.Text = ex.ToString();
}
应该生成我正在寻找的错误消息。但是,尽管单步执行代码表明两个分配都已执行,但标签文本仍保持不变。
有没有人知道我可以尝试什么,要么做这项工作,要么找出它无法正常工作的原因?
编辑提出了更多详情(感谢您的帮助,目前为止,还有。)
ASP.NET页面包含以下部分。按钮的定义如下: -
<div class="section3Header">
<span class="heading1">Some Heading</span>
<input id="Button2" class="button2" type="button" value="Do Work" onclick="do_work();" />
</div>
按钮激活一些Javascript:
function do_work() {
CallBackOU.callback("Do Work");
}
并调用C#代码:
protected void CallBackOU_Callback( object sender, ComponentArt.Web.UI.CallBackEventArgs e )
{
if (e.Parameter == "Do Work")
{
this.CallBackOUHelper_Do_Work (e.Output);
}
}
并且调用函数:
private void CallBackOUHelper_Do_Work (HtmlTextWriter writer)
{
try
{
mylabel.Text = "";
do_foo (blah);
}
catch (myexception ex)
{
mylabel.Text = ex.ToString();
}
}
项目中的代码明显多于此,但我不能将其全部包含在内并且不确定哪些位是重要的。
编辑2 激活代码的按钮位于ComponentArt:CallBack
内。研究这个产品的文档here让我怀疑这可能是问题;如果此对象外的部分屏幕未回发,则标签(外部)自然会保持不变。
答案 0 :(得分:1)
我已经在我的电脑上创建了你的场景,并且工作正常。 但是如果你使用的是AJAX,那么它将完全取决于你对Update面板的实现。
如果标签不在更新面板中且按钮位于更新面板上,则按钮单击事件将不会更新标签文本,除非您在其单击事件上添加处理程序。
所以请提供完整的方案。
答案 1 :(得分:-2)
如果此后仍处于忙碌状态,可能是它没有立即更新GUI。请在更新后尝试在表单上调用Refresh()
。