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

时间:2011-10-10 13:09:49

标签: c# asp.net button dynamic 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);
…

并且

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,我在开始时就不知道。我怎么能处理这个?

1 个答案:

答案 0 :(得分:14)

您必须在<{1}}或page_load事件中放置代码。

page_init

阅读MSDN文章 - How to: Add Controls to an ASP.NET Web Page Programmatically?