2011-08-16 3 views
1

私はOnSelectedIndexChangeイベントを持つドロップダウンリストを持っています(ページ上)。これは、LoadControlコマンドを使って毎回異なるコントロール(ascx)をページに読み込みます。どのように動的にロードされたコントロールのonclickイベントをキャッチできますか?

各コントロールにはボタン(runat = server)とTextBox(runat = server)があります。

ボタンをクリックすると、Onclick機能を使用できなくなります。

どうすればAscxのOnClick機能に入ることができますか?

私は各SelectedIndexChangeがポストバックを行うことを知っています - だから、私はviewstateに何かを保存する必要があることを知っています。しかし、私はそれを保存する方法を知りませんし、後でTexstBoxに値を取得します。

public event EventHandler ButtonClick; 

、ボタンのクリックイベントで:

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

その後、からあなたはこのように、ユーザーコントロールにイベントハンドラを追加する必要があります(各ASCXの)

答えて

1

ページの場合は、次のようなクリックイベントを得ることができます:

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

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

コントロールを動的にロードする場合は、コントロールは、ポストバック後に再水和していることを確認し、コードをイベントハンドラをassingingことにより、上記のコードをエミュレートするu'll必要があります。

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

ページにUCあるdoes not - その動的にロードされた... –

+0

ちょうどキャッチそれ。私の編集された答えを見てください。 –

+0

私はポストバックでそれを再作成する必要がありますが、その価値を得る。いくつかの友人は私に "制御状態"と言った... ??? –