我在这里有一个小问题,动态生成的按钮及其在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,我在开始时就不知道。我怎么能处理这个?
答案 0 :(得分:14)
您必须在<{1}}或page_load
事件中放置该代码。
page_init
阅读MSDN文章 - How to: Add Controls to an ASP.NET Web Page Programmatically?