C# 带有事件处理程序的asp.net动态按钮

C# 带有事件处理程序的asp.net动态按钮,c#,asp.net,button,dynamic,event-handling,C#,Asp.net,Button,Dynamic,Event Handling,在asp.net中,动态生成的按钮及其事件处理程序有一个小问题。我为特殊用户生成了一个带有附加按钮的灵活表格。按钮将动态生成,效果良好。但我无法让事件处理程序工作 以下是我的代码中的一些片段: 构建按钮(在自己的函数中) 及 我的页面加载为空 但是如果我点击按钮,程序将不会跳转到测试。怎么了 编辑 问题是,一开始我不知道从sql查询返回多少行。对于每一行,我将添加一个删除和更改按钮。 我在程序中调用了一个方法,该方法将结果构建为一个表。 在这个方法中,我检查当前用户是否是AdminUser,如果

在asp.net中,动态生成的按钮及其事件处理程序有一个小问题。我为特殊用户生成了一个带有附加按钮的灵活表格。按钮将动态生成,效果良好。但我无法让事件处理程序工作

以下是我的代码中的一些片段: 构建按钮(在自己的函数中)

我的
页面加载
为空

但是如果我点击按钮,程序将不会跳转到测试。怎么了

编辑 问题是,一开始我不知道从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);
}