我创建了一个自定义Web控件。在CreateChildControls方法的控件中,我动态创建一个表添加行,其中包含一个ImageButton,我试图将事件附加到此ImageButton但事件永远不会触发???
我尝试使用Init方法也不起作用。代码在CreateChildControls
上是这样的我还观察到,如果我直接向Controls.Add()方法添加一个控件并附加一个事件,它可以正常工作。
意思, 1.创建一个按钮附加事件处理程序 2.添加到Controls.Add()方法
在执行上述操作时,它可以正常工作。只有孩子控制事件不被解雇是否有任何我想念的东西???
提前致谢
答案 0 :(得分:0)
我认为我遇到了与你相同的问题,但我非常接近解决方案,我只是不知道这是否是最好的解决方案。
问题在于时间。使用它的覆盖的CreatChildControls方法的自定义控件被添加到webpart本身的CreateChildControls中的页面控件中。直到webpart的OnPreRender方法触发后,才会在回发和非回发中调用自定义控件的CCC。
正如您在page life cycle中看到的,在Load和Render之间触发了回发事件,如果事件未添加到控件中,或者在Load结束之前未将控件添加到页面,事件不会发生。
因此,为了解决这个问题,我们需要以某种方式强制在Load结束之前调用自定义控件的CreateChildControls方法,就像在webpart的CCC期间一样。您无法手动调用该方法:该方法受到保护,无法从外部访问,因此我正在寻找正确的方法来执行此操作。
为了测试,我重命名了自定义控件的CCC,使其成为常规的公共方法,并从webpart的CCC调用该方法。现在我的事件正常发生。
如果这不适合您,请您发布您的代码以便我们找到错误吗?