2011-07-28 61 views
1

我試圖改變主頁上按鈕激活的一段C#代碼中的標籤文本。說完看着hereherehere我的理解是設置爲我這樣做的文本值...未能更改標籤的文字 - 任何想法爲什麼?

try 
{ 
    mylabel.Text = ""; 
    do_foo (blah); 
} 
catch (myexception ex) 
{ 
    mylabel.Text = ex.ToString(); 
} 

應該產生我在尋找的錯誤消息。但是,儘管遍歷代碼顯示兩個賦值都已執行,但標籤文本保持不變。

有沒有人有任何想法我可以嘗試,要麼做這項工作,要找出它爲什麼不工作?

編輯一些更多的細節問(到目前爲止,感謝您的幫助,chaps)。

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(); 
    } 

} 

有一個咕d顯然,在這個項目中處理更多的代碼比較明顯,但是我不能全部包含這些代碼,並且我不確定哪些位很重要。

編輯2激活代碼的按鈕位於ComponentArt:CallBack之內。研究此產品的文檔here使我懷疑這可能是問題;如果該對象外部的屏幕部分未被回傳,則標籤(外部)自然不會改變。

+0

標籤文字說什麼? –

+0

@Tim B,標籤在表單中設置爲「標籤」,這樣我就可以看到它的位置,直到我可以使用它爲止。 –

+0

這是在哪裏執行的?例如在Form_Load中或之前? –

回答

1

我已經在我的電腦中創建了你的場景並且工作正常。 但是,如果您使用AJAX,那麼它將完全取決於您的更新面板的實施。

如果標籤不在更新面板中並且按鈕位於更新面板上,則按鈕單擊事件不會更新標籤文本,除非您在其單擊事件中添加了處理程序。

所以請提供完整的場景。

+0

謝謝你的幫助;我爲這個問題增加了更多的代碼。 –

+0

繼續領導,我發現問題是由頁面內部的ComponentArt:CallBack控件造成的;必須包含任何希望在同一個回調塊內更新的控件。 –

-2

如果在此之後它仍然處於忙碌狀態,那麼它可能不會立即更新GUI。嘗試在更新後在表單上呼叫Refresh()

+1

它是ASP.NET,而不是WinForms。 –

+0

我在閱讀他的文章時犯了同樣的錯誤。我認爲他正在談論ASP.NET,因爲他的標籤建議,而不是Windows窗體。 – RolandK

相關問題