我正在向asp.net Web应用程序添加x个按钮。这是我的代码:
int i = 0;
foreach(var foo in bar){
Button b = new Button();
b.ID = "button" + i.ToString();
b.CommandName = "var_value";
b.CommandArgument = foo;
b.Command += Execute_Command;
//add to panel p
p.Controls.Add(b);
i++;
}
private void Execute_Command(object sender, CommandEventArgs e){
//do stuff
}
永远不会调用Execute_Command方法。按钮显示正常,当我调试它们时,它们具有命令名称和分配给它们的正确命令参数。我不确定我做错了什么。
答案 0 :(得分:0)
按钮是动态创建的,因此 它们不在控制树中 。因此,当您触发click事件时,它无法触发Command事件。
要修复此问题,您需要在 Page_Init 或 Page_Load 中重新加载动态创建的按钮 每次回发 上的活动 相同的ID 。
例如,
protected void Page_Init(object sender, EventArgs e)
{
int i = 0;
foreach(var foo in bar){
Button b = new Button();
b.ID = "button" + i.ToString();
b.CommandName = "var_value";
.CommandArgument = foo;
b.Command += Execute_Command;
//add to panel p
p.Controls.Add(b);
i++;
}
}