C# 带有事件处理程序的asp.net动态按钮
在asp.net中,动态生成的按钮及其事件处理程序有一个小问题。我为特殊用户生成了一个带有附加按钮的灵活表格。按钮将动态生成,效果良好。但我无法让事件处理程序工作 以下是我的代码中的一些片段: 构建按钮(在自己的函数中) 及 我的C# 带有事件处理程序的asp.net动态按钮,c#,asp.net,button,dynamic,event-handling,C#,Asp.net,Button,Dynamic,Event Handling,在asp.net中,动态生成的按钮及其事件处理程序有一个小问题。我为特殊用户生成了一个带有附加按钮的灵活表格。按钮将动态生成,效果良好。但我无法让事件处理程序工作 以下是我的代码中的一些片段: 构建按钮(在自己的函数中) 及 我的页面加载为空 但是如果我点击按钮,程序将不会跳转到测试。怎么了 编辑 问题是,一开始我不知道从sql查询返回多少行。对于每一行,我将添加一个删除和更改按钮。 我在程序中调用了一个方法,该方法将结果构建为一个表。 在这个方法中,我检查当前用户是否是AdminUser,如果
页面加载
为空
但是如果我点击按钮,程序将不会跳转到测试。怎么了
编辑强>
问题是,一开始我不知道从sql查询返回多少行。对于每一行,我将添加一个删除和更改按钮。
我在程序中调用了一个方法,该方法将结果构建为一个表。
在这个方法中,我检查当前用户是否是AdminUser,如果是,我将调用buildAdminButtons函数。
在这里,我为每一行在一个新列中创建按钮。我怎么能把这个装上
private void buildAdminButtons(TableRow tempRow, int i)
{
Button ButtonDelete = new Button();
Button ButtonChange = new Button();
TableCell change = new TableCell();
TableCell delete = new TableCell();
ButtonChange.Text = "Change";
ButtonChange.ID = "change_" + i.ToString();
ButtonChange.Font.Size = FontUnit.Point(7);
ButtonChange.ControlStyle.CssClass = "button";
ButtonDelete.Text = "Delete";
ButtonDelete.ID = "delete_" + i.ToString();
ButtonDelete.Font.Size = FontUnit.Point(7);
ButtonDelete.ControlStyle.CssClass = "button";
change.Controls.Add(ButtonChange);
delete.Controls.Add(ButtonDelete);
tempRow.Cells.Add(change);
tempRow.Cells.Add(delete);
}
我给每个按钮都添加了一个唯一的id,我一开始不知道。如何处理此问题?您必须将该代码放入页面加载
或页面初始化
事件中
protected void Page_Load()
{
Button ButtonChange = new Button();
ButtonChange.Text = "Change";
ButtonChange.ID = "change_" + i.ToString();
ButtonChange.Font.Size = FontUnit.Point(7);
ButtonChange.ControlStyle.CssClass = "button";
ButtonChange.Click += new EventHandler(test);
}
阅读MSDN文章-作为旁注,事件的这种动态连接必须在每次回发时发生,但正如AVD在page_load或page_init中所说的那样(又名在页面生命周期中触发事件之前。在page_Load中初始化按钮就足够了吗?…我将按钮添加到表中的每一行,生成按钮就容易多了。谢谢。在msdn文章中,没有提到有事件的动态控件。也没有关于page_Load或page_Init的句子事件。
private void buildAdminButtons(TableRow tempRow, int i)
{
Button ButtonDelete = new Button();
Button ButtonChange = new Button();
TableCell change = new TableCell();
TableCell delete = new TableCell();
ButtonChange.Text = "Change";
ButtonChange.ID = "change_" + i.ToString();
ButtonChange.Font.Size = FontUnit.Point(7);
ButtonChange.ControlStyle.CssClass = "button";
ButtonDelete.Text = "Delete";
ButtonDelete.ID = "delete_" + i.ToString();
ButtonDelete.Font.Size = FontUnit.Point(7);
ButtonDelete.ControlStyle.CssClass = "button";
change.Controls.Add(ButtonChange);
delete.Controls.Add(ButtonDelete);
tempRow.Cells.Add(change);
tempRow.Cells.Add(delete);
}
protected void Page_Load()
{
Button ButtonChange = new Button();
ButtonChange.Text = "Change";
ButtonChange.ID = "change_" + i.ToString();
ButtonChange.Font.Size = FontUnit.Point(7);
ButtonChange.ControlStyle.CssClass = "button";
ButtonChange.Click += new EventHandler(test);
}