首页 > 解决方案 > 来自动态按钮的动态按钮

问题描述

有人可以向我解释一下吗?我正在编写一个非常简单的 Web 表单(C# aspx)并且我正在使用动态按钮。我创建了第一个按钮并向其添加了单击事件-没问题-一切正常。但是当我在我的第一个按钮的事件处理程序中创建第二个动态按钮时 - 我无法向它添加事件处理程序。我的意思是我可以——没有错误——但我永远也达不到。

在下面的代码中 - 当我加载页面时 - 我看到一个按钮。我单击它 - 并添加了一个新按钮。我单击第二个按钮 - 它什么也没做。(?)

protected void Page_Load(object sender, EventArgs e)
{
    // on PageLoad I create a dynamic button named b1
    Button b1 = new Button();
    b1.Text = "new 1";
    b1.Click += new EventHandler(b1_Click);
    div_data.Controls.Add(b1);
    // div_data is just a HTML div tag
}

void b1_Click(object sender, EventArgs e)
{
    // when I click dynamid button b1 - a new dynamic button b2 is created
    Button b2 = new Button();
    b2.Text = "new 2";
    b2.Click += new EventHandler(b2_Click);
    div_data.Controls.Add(b2);
}

void b2_Click(object sender, EventArgs e)
{
    //this code is never executed... why ???
}

感谢您的建议-如果这是一个菜鸟问题,对不起;-)

标签: c#asp.netbuttondynamic

解决方案


所有控件和所有其他对象都在页面生命周期结束时处理。这意味着您必须在回发时重新创建它们。您已经在为按钮执行此操作ButtonPage_Load但不是使用b2在第一个按钮的事件处理程序中创建的按钮。

但真正的问题是:为什么需要动态创建它们?以声明方式创建它们(在 aspx 标记上)并根据需要使它们可见/不可见。


推荐阅读