我已经创建了一个自定义web控件。在CreateChildControls方法上的该控件中,我动态地创建了一个表添加行,其中包含一个ImageButton,并且我试图将一个事件附加到这个ImageButton,但是该事件从不触发?
我也尝试过Init方法,它不起作用。代码在CreateChildControls上是这样的
我还注意到,如果我直接向Controls.Add()方法添加一个控件并附加一个事件,它就能正常工作。
意思是,1.创建一个附加事件处理程序的按钮2.向Controls.Add()方法添加
如果这样做的话,效果会很好。只有孩子控制的事件才不会被炒鱿鱼,我遗漏了什么吗?
提前感谢
发布于 2011-03-28 09:15:39
我想我和你有同样的问题,但是我很接近一个解决方案,我只是不知道这是否是最好的解决方案。
我的问题是时机问题。自定义控件及其过载的CreatChildControls方法被添加到The部件本身的CreateChildControls中的页面控制中。定制控件的CCC直到webpart的OnPreRender方法激发后才会被调用,无论是回发还是非回发。
正如您在页面生命周期中看到的,回发事件是在加载和呈现之间触发的,如果事件没有添加到控件,或者控件在加载结束之前没有添加到页面,则事件不会触发。
因此,为了解决这个问题,我们需要强制定制控件的CreateChildControls方法在加载结束之前被调用,就像在webpart的CCC中一样。您不能手动调用该方法:该方法是受保护的,不能从外部访问,因此我正在寻找正确的方法。
为了进行测试,我重新命名了自定义控件的CCC,使其成为一个常规的公共方法,并从and部件的CCC中调用该方法。现在我的活动开始正常了。
如果这对你不起作用,你能不能把你的代码贴出来,这样我们才能找到错误呢?
https://stackoverflow.com/questions/5388339
复制相似问题