在pageload事件之后动态创建控件时,不附加ASP.net事件处理程序

时间:2015-03-09 17:00:25

标签: c# asp.net

我遇到的问题正是它听起来的样子。

我有一个事件处理程序:

public void Handler(object sender, EventArgs e)
{
      TableRow newRow = new TableRow();
      TableCell newCell = new TableCell();
      Button newButton = new Button();
      newButton.Click += new EventHandler(anotherHandler);
      newCell.Controls.Add(newButton);
      newRow.Cells.Add(newCell);      
      SomeTable.Rows.Add(newRow);
}

控件显示得很好。然而,不知何故,这些控制'事件处理程序不会触发。它似乎在页面加载后无法订阅事件。有什么方法可以解决这个问题,还是只能在页面加载期间订阅事件?

提前致谢。

1 个答案:

答案 0 :(得分:2)

而是在用户执行某些操作时动态创建项目,无条件地创建项目(理想情况下通过标记)并简单地将其标记为隐藏,直到用户执行他们需要做的任何事情来使其显示。

在页面上无条件地使用该项目可以确保所有事件在页面生命周期中的适当时间连线,并有条件地显示/隐藏它们确保用户只能在应该的时候与它们进行交互。

当你动态创建这些项目时,在页面生命周期中已经太晚了,无法向它们添加事件处理程序并让它们触发。