按钮删除C#后事件处理程序没有触发

时间:2012-03-21 15:40:43

标签: c# asp.net event-handling postback

我有一个包含SQL数据库数据的表,该表存在一些行和列。 在显示数据的表之前,用户必须首先提供凭证,因此我动态地创建表(及其内容)。

在表格的每一行中,我添加一个带有“删除”按钮的单元格:

   // more code to create the table above
   Button remove = new Button();
   remove.Text = "Remove";
   remove.Click += new EventHandler(remove_Click);

   TableCell last = new TableCell();
   last.Controls.Add(remove);

   row.Cells.Add(last);
   //...

当用户点击按钮时,我希望删除数据库中的相应记录,并在回发后更新表。

此代码用remove_Click编写,但事件永远不会被触发,只是因为在回发后不再存在删除按钮,因此无法触发按钮事件。 如下所述:Dynamically Added Event Handler Not Firing

如果我不删除按钮,代码可以正常工作,但是我如何开始触发事件并仍然想要删除按钮?

2 个答案:

答案 0 :(得分:1)

您必须为Button控件分配唯一ID。

答案 1 :(得分:1)

remove_Click事件处理程序中调用构建表AGAIN的任何函数。由于在删除按钮触发后数据库中不存在记录,因此第二次调用BuildTable()时,在构建表时将不包括该记录。

假设你的.aspx看起来像:

...
<asp:PlaceHolder id="phTable" runat="server">
...

尝试这样的事情:

    PageLoad(...)
    {
        BuildTable();
    }
    BuildTable()
    {
        phTable.Controls.Clear();
        Table T = new Table();
         //do stuff
        phTable.Controls.Add(T);


    }
    protected void remove_Click(object sender, EventArgs e)
    {
        //remove record from database
        BuildTable();

    }