0

这是我的问题:我在页面中动态创建了一些按钮(在 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

4 回答 4

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);

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

于 2013-03-28T12:12:27.533 回答
0

您的事件处理程序语句是

b.Click += new EventHandler(Download_Click);

但你的方法是

private void Download_Command(object sender, CommandEventArgs e)

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

于 2013-03-28T12:17:17.000 回答
0

不应该是这样吗?

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

private void Download_Command(object sender, EventArgs e)
{
    //doing some stuff
}
于 2013-03-28T12:18:54.520 回答
0

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

按钮的 ID 包含一些“\”。我刚刚删除了那些'\',它工作得很好。

谢谢大家的回复!

于 2013-03-29T10:28:06.943 回答