4

所以我的问题是我想向动态创建的 CheckBox 添加一个事件处理程序。我已经研究了其他方法来做到这一点,并决定创建一个包含我的 CheckBoxes 的动态表对我来说是最好的选择。我没有将这些复选框添加到控制树,因为我需要手动管理 ViewState。无论哪种方式,除了我的 CheckBox 的 CheckChanged 事件不会触发之外,我的代码在各个方面都有效。我在 pageLoad 事件中将此事件处理程序添加到我的 CheckBox 中,但是,我尝试的任何页面事件似乎都给了我相同的结果:

CheckBox chbxLv1 = new CheckBox();
chbxLv1.ID = "DymanicallyCreatedIDForIdentification";
chbxLv1.AutoPostBack = true;
chbxLv1.CheckedChanged += new EventHandler(this.checkChanged);

/* Way lower in my code */

protected void checkChanged(object sender, EventArgs e)
{
//Some code goes here which never seems to execute... grrr
}

起初我认为这可能是 ViewState 的问题,并对此进行了相当多的研究。我现在在想我在添加事件处理程序时做了一些愚蠢的事情。我不确定为什么这个事件永远不会触发,但我在向控件添加事件方面有点新意。我这里需要代表吗?

——罗马

4

1 回答 1

2

为了在 ASP.NET 页面生命周期中正确处理动态加载的控件,需要在 OnInit 期间(或者实际上在 LoadViewState 之前)将它们添加到页面中,否则它们的状态信息将不会被维护,实际上你可以,根据在页面的控制图中添加内容的方式/位置来破坏视图状态。

于 2011-11-03T20:20:42.043 回答