2009-04-07 61 views
2

我有一個AJAX控件工具包中的Accordion窗格的自定義Web部件,用作渲染站點地圖層次結構的子項。每個窗格包括一個帶有文本輸入的div和用於編輯站點地圖數據的3個LinkBut​​ton:「添加子項」,「更新」和「刪除」。更新動態控件

當前,所有這些控件都是在重寫的CreateChildControls方法中創建的。

當點擊「添加孩子」LinkBut​​ton時,會觸發事件處理程序,並將新節點添加到站點地圖中。回發完成時,控件應該使用層次結構中新的空節點重新呈現,但不會。在發出新的GET請求後,將顯示新節點。在閱讀了一段時間之後,我想我的問題是我在創建子控件的過程中太早了,因爲在觸發Control事件之前調用了CreateChildControls,所以我將該位移至了OnPreRender方法。但是現在Control事件不會觸發,因爲我在頁面生命週期中將它們掛起太晚(請參見:Custom Control Events Not Firing)。

我的問題是:我如何確保自定義控件呈現其子控件事件處理程序的結果?

順便說一下,我在Web部件而不是自定義服務器控件(例如,生命週期不同)中執行此操作嗎?

回答

1

您可以在頁面的OnInit中調用EnsureChildControls。這將確保在處理任何事件之前重新創建子控件。