【发布时间】:2009-04-07 19:29:32
【问题描述】:
我有一个自定义 Web 部件,其中包含来自 AJAX 控件工具包的 Accordion 窗格作为子级,用于呈现站点地图层次结构。每个窗格都包含一个带有文本输入的 div 和 3 个用于编辑站点地图数据的链接按钮:“添加子项”、“更新”和“删除”。
目前,所有这些控件都是在重写的 CreateChildControls 方法中创建的。
单击“添加子”链接按钮时,会触发事件处理程序,并将新节点添加到站点地图。回发完成后,控件应使用层次结构中的新空节点重新呈现,但事实并非如此。在一个新的 GET 请求之后,新节点出现。阅读了一段时间后,我认为我的问题是我在过程中过早地创建了我的子控件,因为在触发 Control 事件之前调用了 CreateChildControls,所以我将那个位移到了 OnPreRender 方法中。但是现在控制事件不会触发,因为我在页面生命周期中连接它们太晚了(见这里:Custom Control Events Not Firing)。
我的问题是:如何确保自定义控件呈现其子控件事件处理程序的结果?
顺便说一句,我在 Web 部件而不是自定义服务器控件中执行此操作是否重要(例如,生命周期是否不同)?
【问题讨论】: