2011-08-16 46 views
1

我有一個下拉列表(在頁面上)有OnSelectedIndexChange事件,它們每次動態加載不同的控件(ascx)(使用LoadControl命令) - 進入頁面。如何捕獲動態加載控件的onclick事件?

每個控件都有一個按鈕(runat = server)和TextBox(runat = server)。

當我點擊按鈕 - 我不能進入Onclick函數。

我怎樣才能進入Ascx的OnClick函數?

我知道每個SelectedIndexChange它使回發 - 所以我知道我必須保存在視圖狀態的東西。但我不知道如何保存它,然後在TexstBox上獲得eneterd的值。

回答

1

(每個ASCX)您需要一個事件處理程序添加到用戶的控制,就像這樣:

public event EventHandler ButtonClick; 

而在按鈕的單擊事件:

protected void Button1_Click(object sender, EventArgs e) 
{ 
    if (this.ButtonClick != null) 
     this.ButtonClick(this, e); 
} 

然後,頁面,你可以得到像這樣的點擊事件:

<UC:MyUserControl ID="UserControl1" runat="server" OnButtonClick="UserControl1_ButtonClick" ... /> 

protected void UserControl1_ButtonClick(object sender, EventArgs e) 
{ 
    //Handle the click event here 
} 

如果你正在動態地加載控件,那麼你日子會把你需要確保這些控件回發後覆水,並通過代碼assinging事件處理程序模仿上面的代碼:

MyUserControl ctrl = (MyUserControl)this.LoadControl("..."); 
ctrl.ButtonClick += new EventHandler(UserControl1_ButtonClick); 
+0

在網頁上找到的UC犯規 - 它的動態加載... –

+0

剛好趕上那。看到我編輯的答案。 –

+0

我需要在帖子後面重新創建它,但也有它的價值。有些朋友告訴我它的「控制狀態」...... ??? –

相關問題