我有一个自定义Web部件,其中包含来自AJAX Control Toolkit的Accordion窗格,作为用于渲染站点地图层次结构的子窗口。每个窗格都包含一个带文本输入的div和3个用于编辑站点地图数据的LinkButtons:“添加子项”,“更新”和“删除”。
目前,所有这些控件都是在重写的CreateChildControls方法中创建的。
单击“添加子级”LinkButton时,将触发事件处理程序,并将新节点添加到站点地图。回发完成后,控件应该使用层次结构中的新空节点重新呈现,但事实并非如此。在新的GET请求之后,将显示新节点。阅读了一段时间之后,我认为我的问题是我在过程中过早地创建了我的子控件,因为在触发Control事件之前调用了CreateChildControls,所以我将这一点移到了OnPreRender方法。但是现在Control事件没有触发,因为我在页面生命周期中将它们挂起太晚了(参见这里:Custom Control Events Not Firing)。
我的问题是:如何确保自定义控件呈现其子控件事件处理程序的结果?
顺便说一句,我在网络部分而不是自定义服务器控件(例如生命周期不同)中这样做是否重要?
答案 0 :(得分:1)
您可以在页面的OnInit中调用EnsureChildControls。这将确保在处理任何事件之前重新创建子控件。