没有改变标签的文字 - 任何想法为什么?

时间:2011-07-28 08:05:01

标签: c# asp.net

我正在尝试更改主页上按钮激活的一段C#代码中的标签文本。看了hereherehere后,我理解以这种方式设置文本值......

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让我怀疑这可能是问题;如果此对象外的部分屏幕未回发,则标签(外部)自然会保持不变。

2 个答案:

答案 0 :(得分:1)

我已经在我的电脑上创建了你的场景,并且工作正常。 但是如果你使用的是AJAX,那么它将完全取决于你对Update面板的实现。

如果标签不在更新面板中且按钮位于更新面板上,则按钮单击事件将不会更新标签文本,除非您在其单击事件上添加处理程序。

所以请提供完整的方案。

答案 1 :(得分:-2)

如果此后仍处于忙碌状态,可能是它没有立即更新GUI。请在更新后尝试在表单上调用Refresh()