首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CreateChildControls方法ChildControls不触发事件

CreateChildControls方法ChildControls不触发事件
EN

Stack Overflow用户
提问于 2011-03-22 08:05:42
回答 1查看 2K关注 0票数 0

我已经创建了一个自定义web控件。在CreateChildControls方法上的该控件中,我动态地创建了一个表添加行,其中包含一个ImageButton,并且我试图将一个事件附加到这个ImageButton,但是该事件从不触发?

我也尝试过Init方法,它不起作用。代码在CreateChildControls上是这样的

  1. 我创建了一个小组。
  2. I创建一个包含数据和图像按钮的表。
  3. 我将此表添加到创建的面板中。
  4. 我将这个面板添加到Controls.Add方法中。

我还注意到,如果我直接向Controls.Add()方法添加一个控件并附加一个事件,它就能正常工作。

意思是,1.创建一个附加事件处理程序的按钮2.向Controls.Add()方法添加

如果这样做的话,效果会很好。只有孩子控制的事件才不会被炒鱿鱼,我遗漏了什么吗?

提前感谢

EN

回答 1

Stack Overflow用户

发布于 2011-03-28 09:15:39

我想我和你有同样的问题,但是我很接近一个解决方案,我只是不知道这是否是最好的解决方案。

我的问题是时机问题。自定义控件及其过载的CreatChildControls方法被添加到The部件本身的CreateChildControls中的页面控制中。定制控件的CCC直到webpart的OnPreRender方法激发后才会被调用,无论是回发还是非回发。

正如您在页面生命周期中看到的,回发事件是在加载和呈现之间触发的,如果事件没有添加到控件,或者控件在加载结束之前没有添加到页面,则事件不会触发。

因此,为了解决这个问题,我们需要强制定制控件的CreateChildControls方法在加载结束之前被调用,就像在webpart的CCC中一样。您不能手动调用该方法:该方法是受保护的,不能从外部访问,因此我正在寻找正确的方法。

为了进行测试,我重新命名了自定义控件的CCC,使其成为一个常规的公共方法,并从and部件的CCC中调用该方法。现在我的活动开始正常了。

如果这对你不起作用,你能不能把你的代码贴出来,这样我们才能找到错误呢?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5388339

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档