2011-05-09 6 views
2

ASP.NETでページがあり、WebControls.Buttonのサブクラスを既存の静的TableCellのControlsデータメンバーに動的に追加しています。期待どおり、ボタンはブラウザに正常に表示されます。しかし、ボタンをクリックすると、button.Clickのために追加したイベントハンドラは呼び出されません。これがなぜなのかについての示唆はありますか?ASP.NETでプログラムコントロールを追加できません

var controls = this.displaytable.Rows[i].Cells[j].Controls; 
var button = new TableButton(j, i); 
button.Click += new EventHandler(this.button_Click); 
button.UseSubmitBehavior = false; 
button.Text = "Available"; 
controls.Add(button); 
+3

このコードはどこに配置されていますか?ポストバックで動的コントロールを再作成する必要があります。そうしないと、ポストバックイベントを処理できなくなります。 –

+0

この質問への私の答えをチェックしてください:http://stackoverflow.com/questions/5939313/dynamically-assign-button-events-in-c-asp-net/5939408#comment-6845140 – keyboardP

+0

私はそのページを確認し、コントロールを作成しました。それは問題を解決しませんでした。 – Puppy

答えて

1

動的に追加されるボタンは、リクエストごとに作成する必要があります。ポストバックイベントを発生させる前に(OnLoadなど)十分な可能性があります。このSO答えは少し役立つかもしれ

var controls = this.displaytable.Rows[i].Cells[j].Controls; 
var button = new TableButton(j, i); 
button.Click += new EventHandler(this.button_Click); 
button.UseSubmitBehavior = false; 
button.Text = "Available"; 
button.Id = string.Format("TableButton_{0}_{1}", j, i); 
controls.Add(button); 

ASP.NET dynamic Command Button event not firingボタンはいつか明示的なIDを持っている必要があります。

関連する問題