Asp.net CreateChildControls方法ChildControls不触发事件

Asp.net CreateChildControls方法ChildControls不触发事件,asp.net,custom-controls,Asp.net,Custom Controls,我已经创建了一个自定义web控件。在CreateChildControls方法上的控件中,我动态创建一个表,向其中添加行,其中包含一个ImageButton,我尝试将一个事件附加到此ImageButton,但该事件从未触发 我也尝试了Init方法,但它不起作用。CreateChildControls上的代码如下所示 我创建了一个面板。 我创建了一个包含数据的表,表上有一个imagebutton 我将此表添加到已创建的面板中 我将此面板添加到控件。添加方法。 我还观察到,如果我将控件直接添加到Co

我已经创建了一个自定义web控件。在CreateChildControls方法上的控件中,我动态创建一个表,向其中添加行,其中包含一个ImageButton,我尝试将一个事件附加到此ImageButton,但该事件从未触发

我也尝试了Init方法,但它不起作用。CreateChildControls上的代码如下所示

我创建了一个面板。 我创建了一个包含数据的表,表上有一个imagebutton 我将此表添加到已创建的面板中 我将此面板添加到控件。添加方法。 我还观察到,如果我将控件直接添加到Controls.add方法并附加事件,则效果良好

意思是, 1.创建按钮并附加事件处理程序 2.添加到控件。添加方法

在完成上述操作后,效果良好。只有孩子控制事件不被解雇我有什么遗漏吗


提前谢谢

我想我遇到了和你一样的问题,但我非常接近一个解决方案,我只是不知道这是否是最好的解决方案

我的问题是时间。自定义控件及其重写的CreatChildControls方法将添加到Web部件本身的CreateChildControls中的pagecontrols。在回发和非回发中,在Web部件的OnPreRender方法激发之前,不会调用自定义控件的CCC

如中所示,回发事件在加载和呈现之间激发,如果事件未添加到控件,或者控件未在加载结束前添加到页面,则不会激发事件

所以为了解决这个问题,我们需要以某种方式强制在加载结束之前调用自定义控件的CreateChildControls方法,就像在Web部件的CCC期间一样。您不能手动调用该方法:该方法受保护,无法从外部访问,因此我正在寻找正确的方法来实现这一点

为了进行测试,我将自定义控件的CCC重命名为常规公共方法,并从Web部件的CCC调用该方法。现在我的活动正常启动


如果这对您不起作用,请发布您的代码以便我们找到故障?

调用Control.EnsureChildControl将运行CreateChildControls.Control.EnsureChildControls是受保护的方法,而不是公共的,就像CreateChildControls一样,因此不能从对象本身的上下文之外调用。哦,他说‘CreateChildControls方法’,我以为他在继承另一个控件的控件中使用该方法,我知道他指的是事件。问题是CreateChildControls不保证在任何特定时间甚至根本不会启动,它不是添加控件的正确位置,除非实际从控件代码本身构建自定义控件。只在加载页面上添加它们有什么不对?我很确定EnsureChildControl是为这个动态场景构建的,在这个动态场景中首先触发加载事件。