动态添加的 ASP.Net 按钮无法调用 Click 或 CommandArgument 事件
Dynamically added ASP.Net Button could not call Click or CommandArgument event
我正在向 asp.net 网络应用程序添加 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 方法从未被调用。这些按钮显示得很好,当我调试时,它们有命令名称和分配给它们的正确命令参数。我不确定我做错了什么。
按钮是动态创建的,因此它们不在控件树中。结果,当您触发点击事件时,它无法触发命令事件。
为了修复它,您需要重新加载 Page_Init 或 [=22 中动态创建的按钮=]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++;
}
}
我正在向 asp.net 网络应用程序添加 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 方法从未被调用。这些按钮显示得很好,当我调试时,它们有命令名称和分配给它们的正确命令参数。我不确定我做错了什么。
按钮是动态创建的,因此它们不在控件树中。结果,当您触发点击事件时,它无法触发命令事件。
为了修复它,您需要重新加载 Page_Init 或 [=22 中动态创建的按钮=]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++;
}
}