2009-07-06 14 views
1

私は、コンロールホールダーを使用して実行時にコントロールを動的に追加しています。ボタンを追加してイベントを処理したい。彼らは同じことをしますが、異なるパラメータで行います。ここにコードのサンプルです:ランタイム中に追加されたコントロールのイベントを処理する

while (dataReader.Read()) 
{ 
     Button edit = new Button(); 

     PlaceHolderQuestions.Controls.Add(edit); 
} 

私はボタンのイベントを処理する必要があります。おかげ

答えて

4

物事のカップル:

まず、あなたは彼らが発生したイベントが処理される前に追加されているように、新しいコントロールは、Page.OnInitイベントに追加されていることを確認する必要があります。

また、ポストバックに再度追加する必要があります。

また、固有のIDセットが必要です。

edit.Click += new EventHander(EditButton_Click); 

以降のコードで:

protected void EditButton_Click(object sender, EventArgs e) 
{ 
    // Do Something 
} 
+0

+1 "新しいコントロールがPage.OnInitイベントに追加されていることを確認する" ...多くの人がこれを間違えるようにする – Juri

+0

Juriと同じ... OnInit ... commonデバッグに失敗する可能性のある間違い –

+0

初めてこの作業を行ったとき、私は本当に年を取ったIDを設定していませんでした。 – samjudson

0

は、あなただけのメソッドを作成することができ、その後、追加します。

edit.Click += YourMethodName; 

を限りのEventHandlerが発生する前に、同じボタンをポストバック上で作成されたとして、イベントが発生します。

+0

THX男

最後に、あなたはちょうどあなたが任意のC#のアプリの場合と同様にイベントを処理することができます。しかし、私はこの行をどこに書きますか? edit.Click + =新しいEventHander(EditButton_Click);ボタンの宣言の下に –

関連する問題