向动态创建的复选框添加事件处理程序(aspx,c#)
所以我的问题是我想为动态创建的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最初的一个问题,并对此进行了相当多的研究。 我现在正在考虑添加一个事件处理程序,我正在做一些愚蠢的事情。 我不确定为什么这个事件永远不会发生,但我在向控件添加事件方面有点新意。 我需要代表吗?
–Roman
为了在ASP.NET页面生命周期中正确处理动态加载的控件,需要在OnInit期间(或者在LoadViewState之前)将它们添加到页面中,否则它们的状态信息将无法维护,事实上你可以,根据页面控件图中添加内容的方式/位置,破坏视图状态。
- 如何初始化自定义HTTP上下文或HttpContextBase
- 为什么我得到System.IO.FileLoadException:无法加载文件或程序集,大约每周一次在我的ASP.Net网站上?
- “此文件被阻止,因为它来自另一台计算机” – ajax权限问题
- c#如何从preinit设置和使用会话状态
- Azure网络应用程序突然不再支持文化
- 在ASP.Net Core MVC中读取JSON post数据
- 使用ASP.NET从另一个页面返回后,为什么Page_Load没有触发 – ergo epic embarrassment :)
- 如何在c#和vb.net中获取客户端机器的MAC地址
- 如何在按钮点击事件上打开新的浏览器窗口?