这是我的问题:我在页面中动态创建了一些按钮(在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
}
答案 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包含一些'\'。我刚刚删除了那些'\',它的工作正常。
感谢大家的回复!