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

我在这里有一个小问题,动态生成按钮及其在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,我在开始时就不知道。 我怎么能处理这个?

您必须将该代码放在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网页?