C#/ apsx.net - 动态创建按钮不起作用

时间:2013-03-28 12:09:07

标签: c# .net button buttonclick preinit

这是我的问题:我在页面中动态创建了一些按钮(在Page_PreInit方法中),所有按钮都链接到同一个事件处理程序。但是当我点击它们时,那​​些按钮不会触发事件...有人可以帮助我吗?

以下是我的一些代码:

按钮创建(在Page_PreInit方法的foreach循环上):

Button b = new Button();
field.Controls.Add(b);

b.Text = "Download";
b.ID = tmp_out[type] as String;
b.Click += new EventHandler(Download_Click);

OnClick方法:

private void Download_Click(object sender, EventArgs e)
{
    //doing some stuff
}

4 个答案:

答案 0 :(得分:1)

必须在Page PreInit或Init期间添加动态控件,而不是在加载时添加。这是因为页面生命周期和视图状态加载...所以首先尝试看看是否能解决问题。

此外,我相信我读到最好以这种方式订购代码:

Button b = new Button();
field.Controls.Add(b);

b.Text = "Download";
b.ID = tmp_out[type] as String;
b.Click += new EventHandler(Download_Click);

首先将控件添加到内部集合,然后更改它的属性。

答案 1 :(得分:0)

您的事件处理程序语句是

b.Click += new EventHandler(Download_Click);

但你的方法是

private void Download_Command(object sender, CommandEventArgs e)

你确定它是正确的触发方法吗?

答案 2 :(得分:0)

不应该这样吗?

...
b.Click += new EventHandler(Download_Command);
...

private void Download_Command(object sender, EventArgs e)
{
    //doing some stuff
}

答案 3 :(得分:0)

好的,我解决了我的问题。

按钮的ID包含一些'\'。我刚刚删除了那些'\',它的工作正常。

感谢大家的回复!