我有一個用戶控件,充當容器來容納更多的用戶控件。asp.net在兒童控制數據綁定完成後執行動作
一旦所有的子控件都有數據綁定,我需要執行某些訪問檢查。
我希望我可以附加到一個usercontrol.databound事件,但似乎並沒有一個。
一旦其他用戶控件有數據綁定,我必須對父控件usercontrol做些什麼其他選擇。我假設我必須讓子控件通知父母他們有數據綁定,並且父母需要跟蹤哪些數據綁定,哪些沒有數據綁定,以及何時他們都有數據綁定可以執行其操作。
我有一個用戶控件,充當容器來容納更多的用戶控件。asp.net在兒童控制數據綁定完成後執行動作
一旦所有的子控件都有數據綁定,我需要執行某些訪問檢查。
我希望我可以附加到一個usercontrol.databound事件,但似乎並沒有一個。
一旦其他用戶控件有數據綁定,我必須對父控件usercontrol做些什麼其他選擇。我假設我必須讓子控件通知父母他們有數據綁定,並且父母需要跟蹤哪些數據綁定,哪些沒有數據綁定,以及何時他們都有數據綁定可以執行其操作。
您不需要讓子控件通知父項。看看ASP.Net Page :Life Cycle。您需要將代碼置於PreRender事件中的容器用戶控件中。這在回發事件之後執行。
基於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選擇兩次)
我正在考慮把它作爲最後的手段在預渲染。我們在預渲染之前做過這種事情的經歷很糟糕,但我認爲這主要是因爲一個神級控制了所有邏輯,而不是每個控制都具有所需邏輯的邏輯。 – 2010-08-17 06:34:18