2010-08-17 49 views
0

我有一個用戶控件,充當容器來容納更多的用戶控件。asp.net在兒童控制數據綁定完成後執行動作

一旦所有的子控件都有數據綁定,我需要執行某些訪問檢查。

我希望我可以附加到一個usercontrol.databound事件,但似乎並沒有一個。

一旦其他用戶控件有數據綁定,我必須對父控件usercontrol做些什麼其他選擇。我假設我必須讓子控件通知父母他們有數據綁定,並且父母需要跟蹤哪些數據綁定,哪些沒有數據綁定,以及何時他們都有數據綁定可以執行其操作。

回答

0

您不需要讓子控件通知父項。看看ASP.Net Page :Life Cycle。您需要將代碼置於PreRender事件中的容器用戶控件中。這在回發事件之後執行。

+0

我正在考慮把它作爲最後的手段在預渲染。我們在預渲染之前做過這種事情的經歷很糟糕,但我認爲這主要是因爲一個神級控制了所有邏輯,而不是每個控制都具有所需邏輯的邏輯。 – 2010-08-17 06:34:18

-1

基於ASP.net Page Life Cycle Events文章中,我已經使用這個:

protected void Page_PreRenderComplete(object sender, EventArgs e) 
{ 
    if (!IsPostBack) //only at 1st load 
    UpdateSelection(); 
} 

protected void UpdateSelection() 
{ 
    UpdateSelection(listItems.SelectedValue); 
} 

protected void listItems_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    UpdateSelection(); 
} 

在我的情況,UpdateSelection是從下拉列表(它啓動指向索引0)選擇一個文件加載XML數據,需要一些CheckBoxLists首先從其他XML文件中獲取它們的項目,以便它們允許代碼根據XML數據檢查它們上的項目

從那時開始,UpdateSelection只是在下拉列表SelectedIndexChanged事件(那些事件在PreRenderComplete中執行PostBacks,我忽略它們以避免執行Update選擇兩次)