2

asp.net Web アプリケーションに x 個のボタンを追加しています。これはそうするための私のコードです:

int i = 0;
foreach(var foo in bar){
    Button b = new Button();
    b.ID = "button" + i.ToString();
    b.CommandName = "var_value";
    b.CommandArgument = foo;
    b.Command += Execute_Command;

    //add to panel p
    p.Controls.Add(b);

    i++;
}

private void Execute_Command(object sender, CommandEventArgs e){
    //do stuff
}

Execute_Command メソッドは呼び出されません。ボタンは問題なく表示され、デバッグすると、コマンド名と正しいコマンド引数が割り当てられます。何が間違っているのかわかりません。

4

1 に答える 1

0

ボタンは動的に作成されるため、コントロール ツリーにはありません。その結果、クリック イベントをトリガーしたときに Command イベントを発生させることができませんでした。

これを修正するには、同じ IDを持つすべてのポストバックでPage_InitまたはPage_Loadイベントで動的に作成されたボタンをリロードする必要があります。

例えば、

protected void Page_Init(object sender, EventArgs e)
{
   int i = 0;
   foreach(var foo in bar){
      Button b = new Button();
      b.ID = "button" + i.ToString();
      b.CommandName = "var_value";
      .CommandArgument = foo;
      b.Command += Execute_Command;

      //add to panel p
      p.Controls.Add(b);

      i++;
   }
}
于 2016-11-10T20:45:56.610 に答える