動的に追加されたコントロールのイベントは発生しません。これは、ページの子コントロールの作成イベントで呼び出される関数で発生します。動的に追加されたコントロールのイベントは発生しません。
Button bb = new Button();
bb.Click += new EventHandler(bb_Click);
PlaceHolderQuestions.Controls.Add(bb);
動的に追加されたコントロールのイベントは発生しません。これは、ページの子コントロールの作成イベントで呼び出される関数で発生します。動的に追加されたコントロールのイベントは発生しません。
Button bb = new Button();
bb.Click += new EventHandler(bb_Click);
PlaceHolderQuestions.Controls.Add(bb);
asp.netページはlifecyleです。イベントのディスパッチはコントロールツリーに基づいて行われます。あなたのダイナミックコントロールは、コントロールツリー内にある必要があります。 OnInitまたはOnloadのページまたはコントロールを含むプレースホルダにコントロールを追加すると、イベントが送出されます。
別のページでうまくいった奇妙なことですが、コピーして別のページで使用したときに動作しませんでした! –
Hmm。あなたのページのプロパティAutoEventWireUp = "True | False"をチェックしてください。多分それは別のセットです。 – Christian13467
以前のイベントに配置する必要があります。 initイベントハンドラにコードを入れてみてください。
別のページではうまくいきましたが、コピーして別のページで使用したときにうまくいきませんでした。 –
initに入れましたが、それでもまだ火災がありませんでした –
このボタンもにそれぞれ Page_Loadに動的に作成されていることを確認してください。 Page_Loadは、ボタンクリックのため前にハンドラを起動するので、あなたがポストバック時にボタンを作成するために失敗した場合、ボタンは「が存在しない、しかし
If Not Page.IsPostback()
...
End if
:私は、多くの場合、内部のようなコードを入れてのミスを犯しますそのイベントが起こる頃には。
Page_Initに入れて、この条件があったがまだ動作していない –
いいえ、特にこのIf条件の_outside_を入れたいと思います。 –
コードを以前のイベントに入れても問題は解決されません。 Page_Load()にコードを入れようとしても、問題は解決しません。
ページのライフサイクルに応じて、OnLoad関数をオーバーライドし、動的に作成されたコントロールを同じIDで再作成して再接続します。
protected override void OnLoad(EventArgs e)
{
Button bb = new Button() { ID = "myBtn" }
bb.Click += new EventHandler(bb_Click);
PlaceHolderQuestions.Controls.Add(bb);
base.OnLoad(e);
}
protected void Page_Load(object sender, EventArgs e)
{
}
別のページでうまくいった奇妙なことですが、コピーして別のページで使用したときに機能しないことがありました。 –