ページのinitまたはoninitにコードを入れずに動的に生成した4つのボタンにクリックイベントハンドラを使用する方法を解明しようとしています。私は1回ボタンをクリックすると、さらに4つのボタンが生成されます。これら4つのボタンのクリックイベントハンドラは機能しません。ここにコードがあります。誰もが最初にpage_load
に入れずにasp.netのC#でクリックイベントを使用する方法を考え出しましたか?私はこの問題を解決することができれば、私は大きなシナリオでは、私の本当の問題を解決することができます。:ページのinitまたはpageのロードを使用せずに動的ボタンのクリックイベントハンドラを使用する方法
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
for (int i = 0; i < 4; i++)
{
Button b = new Button();
b.ID = i.ToString();
b.Text = "ClickMe";
b.Visible = true;
b.Click += new EventHandler(b_click);
PlaceHolder1.Controls.Add(b);
}
}
void b_click(object sender,EventArgs e)
{
Label1.Text = "ok";
}
イベントハンドラが動作しない理由は、コントロールツリーがポストバック時に正しく再作成されないためです。ビューステートをロードしてイベントを発生させる前に、ボタンを再作成するためにオーバーライドする必要がある特別なページイベントがあります。 –
ボタンの数は静的ですか?ボタンが4つしかないことがわかっている場合は、ボタンが必要になるまで表示しないようにしてください。このようにして、あなたのイベントワイヤーアップは余分な介入なしに期待どおりに動作するはずです。 – dstepan
@MattiasÅslundはい、それはinitメソッドです。明らかにOPは彼が何をする必要があるかを正確に知っていますが、彼は具体的には彼がそれをしたくないと言っています。 – Servy