所以我的问题是我想为动态创建的CheckBox添加一个事件处理程序。我已经看过其他方法来做到这一点,并决定创建一个包含我的CheckBoxes的动态表是我的最佳选择。我没有将这些CheckBox添加到控制树,因为我需要手动管理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最初的一个问题,并对此进行了相当多的研究。我现在正在考虑添加一个事件处理程序,我正在做一些愚蠢的事情。我不确定为什么这个事件永远不会发生,但我在向控件添加事件方面有点新意。我需要代表吗?
- 罗马
答案 0 :(得分:2)
为了在ASP.NET页面生命周期中正确处理动态加载的控件,需要在OnInit期间(或者在LoadViewState之前)将它们添加到页面中,否则它们的状态信息将无法维护,您可以实际上,根据页面控件图中添加内容的方式/位置,会破坏视图状态。