带有事件处理程序的Asp.net动态按钮

本文关键字:net 动态 按钮 Asp 事件处理 程序 | 更新日期: 2023-09-27 18:10:47

我这里有一个小问题,动态生成的按钮和他们的事件处理程序在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);
…

void test(object sender, EventArgs e)
{ 
   // Do some stuff       
}

我的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);
}

我给每个按钮添加了一个唯一的id,我一开始并不知道。我该怎么做呢?

带有事件处理程序的Asp.net动态按钮

您必须在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);
}

阅读MSDN文章-如何:向ASP添加控件。. NET网页编程?