我有一个包含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
如果我不删除按钮,代码可以正常工作,但是我如何开始触发事件并仍然想要删除按钮?
答案 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();
}