none
動的に生成したコントロールのイベントが発生しない RRS feed

  • 質問

  • いつもお世話になっております。

    下記のように動的にボタンを生成したのですが、設定したイベント内に入ってきません。

    ポストバック自体は発生しているようなのですが、何か勘違いしていますでしょうか

    protected void Page_Load(object sender, EventArgs e)
    {
    
     if (!Page.IsPostBack)
     {
    
      Panel div = new Panel();
      div.CssClass = "col-lg-3 form-group text-center ";
    
      LinkButton btnctrl = new LinkButton();
      btnctrl.Text = "test";
      btnctrl.ID = "btnctrl;                      
      btnctrl.CommandArgument = "test";
      btnctrl.Command += this.NewButton_Click;
      btnctrl.CssClass = "btn btn-primary btn-lg";
    
     }else{
    
    
     }
    
    }
    
    
    private void NewButton_Click(object sender, CommandEventArgs e)
    {
       string arr_Argument = e.CommandArgument;
    }
    

    2016年9月3日 4:20

回答

  • > 下記のように動的にボタンを生成したのですが、設定したイベント内に入ってきません。
    > ポストバック自体は発生しているようなのですが、何か勘違いしていますでしょうか

    何故ダメかと言うと、ポストバックの際は if (!Page.IsPostBack) の条件が false になって LinkButton が動的に生成されないからです。

    if (!Page.IsPostBack) を外して、初期表示の時もポストバックのときも Page_Load で LinkButton を動的に生成するようにすればうまく行くと思います。

    • 回答としてマーク hys73 2016年9月4日 0:10
    2016年9月3日 5:31

すべての返信

  • > 下記のように動的にボタンを生成したのですが、設定したイベント内に入ってきません。
    > ポストバック自体は発生しているようなのですが、何か勘違いしていますでしょうか

    何故ダメかと言うと、ポストバックの際は if (!Page.IsPostBack) の条件が false になって LinkButton が動的に生成されないからです。

    if (!Page.IsPostBack) を外して、初期表示の時もポストバックのときも Page_Load で LinkButton を動的に生成するようにすればうまく行くと思います。

    • 回答としてマーク hys73 2016年9月4日 0:10
    2016年9月3日 5:31
  • いつも適切なアドバイスありがとうございます!

    if (!Page.IsPostBack) を外すことでうまく動作させることができました。

    2016年9月4日 0:12