【问题标题】:Dynamical Asp.net Button not fired动态 Asp.net 按钮未触发
【发布时间】:2012-12-31 13:48:54
【问题描述】:

在我的程序中,我使用了一个带有以下代码的动态按钮:

Button button = new Button();  
button.ID = counter.ToString();
button.Text = "ok";
button.Click += new EventHandler(this.ButtonClick);

list.Controls.Add(button);

我添加了如下点击事件的代码:

private void ButtonClick(object sender, EventArgs e)
{
    //..
}

有几种解决方案:

C# Button Not Firing?

Dynamically created button not firing Click event

我已阅读并应用它们,但我无法解决问题。

我的动态按钮操作放在Page_Load。 (我在Page_Init 中尝试过,但没有再次被解雇。)

为了调试,我使用断点。我把它放到Page_Load,第一次页面工作,程序在断点处停止,然后我继续..点击动态按钮后,代码没有被触发......

我的Page_Load 如下:

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
         //..
         case "button":

         Button button = new Button();  
         button.ID = counter.ToString();
         button.Text = "ok";
         button.Click += new EventHandler(this.ButtonClick);


         list.Controls.Add(button);
         break;
    }
}

【问题讨论】:

  • list 到底是什么? list.Controls.add ?您需要将按钮添加到您的表单中。
    ,试试 Form1.Controls.add(button)
  • 我用作列表:
    • 您的 page_load 代码是什么样的?

    标签: c# asp.net .net c#-4.0


    【解决方案1】:

    当您在网络表单中动态创建控件时,您需要在每次回发时再次动态地重新创建它们。

    确保您了解网络表单页面的生命周期,并在预初始化阶段在事件触发之前重新注册控件。

    【讨论】:

    • 我想至少第一次点击的时候,应该是第一次触发,不是吗?因为我创造了它?
    • 第一个添加可以在您的 page_load 中。之后他们需要在 pre_init 事件中完成。
    【解决方案2】:

    要在 web 表单中创建 动态 按钮控件,请在您想要的按钮处赋予 offset 值。

    【讨论】:

      猜你喜欢
      • 2017-06-28
      • 2016-04-13
      • 2010-12-19
      • 2013-07-02
      • 2016-08-02
      • 2013-08-09
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      相关资源
      最近更新 更多