2013-05-03 61 views
0

我在頁面中有一個UpdatePanel。 在這個UpdatePanel中,我有一個控件,它有一個按鈕。 是否有可能在後面的代碼中手動添加此按鈕的回發觸發器(位於用戶控件內)?手動觸發更新面板

這裏的示例代碼

//Page 
<UpdatePanel> 
    <uc1:UserControl /> 
</UpdatePanel> 

//UserControl 
<textbox></textbox> 
<asp:button></asp:Button> 
+0

你想做什麼? – 2013-05-03 15:04:07

+0

從控件手動添加頁面中此更新面板的回發觸發器。 – CH81 2013-05-03 15:05:26

+0

默認情況下,更新面板的ChildrenAsTriggers設置爲true。這意味着任何導致回發的控件都會通過更新面板邏輯(即使是用戶控件中的)。你看到發生了什麼,導致你的問題? – 2013-05-03 16:16:39

回答

0

據我瞭解,你想在你ASPX網頁,其中包含用戶控件用戶控件作爲一個UpdatePanel的PostbackTrigger註冊按鈕。 我已經設法編寫了一個簡單的Web應用程序來複制這個場景,並且沒有進一步的信息,我不能看到你錯在哪裏,或者你得到的錯誤是什麼,如果有的話。如果你擴展你的原始問題,這將有所幫助,例如通過提供相關的代碼片段。我會盡我所能...

從用戶控制的範圍內,你可以作爲後按鈕註冊用下面的代碼更新面板的後面觸發:

public void RegisterPostbackTrigger(UpdatePanel updatePanel) 
    { 
     PostBackTrigger buttonTrigger = new PostBackTrigger(); 
     buttonTrigger.ControlID = TestButton.ClientID; 
     updatePanel.Triggers.Add(buttonTrigger); 
    } 

這樣您就可以調用RegisterPostbackTrigger從你頁面的代碼中傳遞UpdatePanel的引用作爲參數。 MyControl是指用戶控件

MyControl.RegisterPostbackTrigger(MainUpdatePanel); 

這樣做的另一種方法,這可能是相關的具體問題是直接訪問的ScriptManager,並使用其RegisterPostBackControl方法傳遞您的按鈕作爲參數。這裏是a link

如果沒有更多信息,無法真正幫助您!

祝你好運!

+0

中找不到觸發器ID爲'ButtonId'的控件感謝您的回答。事實上,我以前試過,我得到這個錯誤 - 無法找到UpdatePanel'UpdatePanelId'中觸發器的ID爲'ButtonId'的控件。 有什麼想法? – CH81 2013-05-03 17:38:36

+0

當你第一次運行應用程序或者當你點擊按鈕時,你會得到那個錯誤嗎?我認爲這是前者。嘗試在PreRender方法中註冊按鈕,它確保在頁面生命週期的這個階段創建。 '保護無效Page_PreRender(對象發件人,EventArgs的) { 如果 { //MyControl.RegisterPostbackTrigger(MainUpdatePanel)(的IsPostBack!); } }' – elcid 2013-05-03 23:12:25