asp.net动态按钮与事件处理程序

And*_*ter 8 c# asp.net dynamic button event-handling

我在这里有一个小问题,动态生成按钮及其在asp.net中的事件处理程序.我为特殊用户生成一个带有附加按钮的灵活表.按钮将动态生成,工作正常.但我不能让事件处理程序工作.

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

…
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);
…
Run Code Online (Sandbox Code Playgroud)

void test(object sender, EventArgs e)
{ 
   // Do some stuff       
}
Run Code Online (Sandbox Code Playgroud)

Page_Load是空的.

但是,如果我点击按钮,程序将不会跳转到测试.出了什么问题?

编辑!!! 问题是我一开始不知道从sql查询中得到多少行.对于每一行,我将添加删除和更改按钮.我在我的程序中调用了一个将结果构建为表的方法.在这个方法中,我检查当前用户是否是AdminUser,如果是,我将调用buildAdminButtons函数.在这里,我为每一行创建一个新列中的按钮.我怎么能在OnLoad中得到这个?

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);
}
Run Code Online (Sandbox Code Playgroud)

我在每个按钮上添加一个唯一的ID,我在开始时就不知道.我怎么能处理这个?

ada*_*ost 14

您必须将该代码放入page_loadpage_init 事件中.

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);
}
Run Code Online (Sandbox Code Playgroud)

阅读MSDN文章 - 如何:以编程方式将控件添加到ASP.NET网页?

  • 在msdn文章中,没有提到有事件的动态控件.并且没有关于Page_Load或Page_Init事件的句子. (5认同)