0

ここに私の問題があります: 私は自分のページ (Page_PreInit メソッドで) にいくつかのボタンを動的に作成し、すべて同じイベント ハンドラーにリンクしていました。しかし、それらのボタンをクリックしてもイベントが発生しません...誰か助けてくれますか?

これが私のコードの一部です:

ボタンの作成 (Page_PreInit メソッドの foreach ループで):

Button b = new Button();
field.Controls.Add(b);

b.Text = "Download";
b.ID = tmp_out[type] as String;
b.Click += new EventHandler(Download_Click);

OnClick メソッド:

private void Download_Click(object sender, EventArgs e)
{
    //doing some stuff
}
4

4 に答える 4

1

動的コントロールは、ロード時ではなく、Page PreInit または Init 中に追加する必要があります。これは、ページのライフサイクルとビューステートの読み込みが原因です...最初にそれを試して、問題が解決するかどうかを確認してください.

また、コードを次のように並べるのが最善であると読んだと思います。

Button b = new Button();
field.Controls.Add(b);

b.Text = "Download";
b.ID = tmp_out[type] as String;
b.Click += new EventHandler(Download_Click);

最初にコントロールを内部コレクションに追加してから、そのプロパティを変更します。

于 2013-03-28T12:12:27.533 に答える
0

あなたのイベントハンドラステートメントは

b.Click += new EventHandler(Download_Click);

しかし、あなたの方法は

private void Download_Command(object sender, CommandEventArgs e)

トリガーされる正しい方法は確かですか?

于 2013-03-28T12:17:17.000 に答える
0

こんなはずじゃないの?

...
b.Click += new EventHandler(Download_Command);
...

private void Download_Command(object sender, EventArgs e)
{
    //doing some stuff
}
于 2013-03-28T12:18:54.520 に答える
0

わかりました私は私の問題を解決しました。

ボタンの ID に「\」が含まれていました。これらの「\」を削除しただけで、問題なく動作します。

返信ありがとうございます。

于 2013-03-29T10:28:06.943 に答える