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

2024-01-06

我在 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);
…

And

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

My Page_Load是空的。

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

Edit!!!问题是我一开始不知道从 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,但我一开始并不知道。我该如何处理这个问题?


你必须放置that代码在page_load or page_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 网页添加控件? http://msdn.microsoft.com/en-us/library/kyt0fzt1.aspx

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

具有事件处理程序的 asp.net 动态按钮 的相关文章

随机推荐