动态按钮从动态按钮

时间:2018-06-27 13:14:54

标签: c# asp.net button dynamic

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

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

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 ???
}

感谢您的建议-如果是菜鸟问题,则表示抱歉;-)

1 个答案:

答案 0 :(得分:0)

所有控件和所有其他对象都放置在页面生命周期的结尾。 这意味着您必须在回发时重新创建它们。您已经在Button中的按钮Page_Load上执行了此操作,但没有使用在第一手按钮的事件处理程序中创建的按钮b2

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