這實際上是一個更一般的問題,但我能想到的唯一方法就是問一個具體的例子。正確使用asp.net webforms生命週期
我們目前有一個web部分,其中SPGridView
。現在,在CreateChildControls
中創建GV和所有綁定字段,數據被檢索並綁定在OnPreRender
中。這些列是靜態的,所以這工作正常。
CreateChildControls{
// create and configure the gridview
// create all bound fields and add them to the gridview
// add the gridview to the page
}
OnPreRender{
// get the data and bind it to the gridview
}
現在我們需要將列更改爲依賴於用戶從下拉列表中進行的選擇。在CreateChildControls
之內,我們無法從下拉控件獲取值,因此我們無法有條件地添加綁定字段。我的問題是,這裏的最佳做法是什麼?我們可以在CreateChildControls
中創建所有可能的綁定字段,然後僅在OnPreRender
中向GV添加相應的字段。我們可以將所有綁定字段的創建全部移動到OnPreRender
。還有其他很多選擇。
CreateChildControls{
// create and configure the gridview
// create ALL bound fields here?
// add the gridview to the page
}
OnPreRender{
// or maybe create only the applicable bound fields here?
// add the appropriate fields to the gridview
// get the data and bind it to the gridview
}
而且在更廣泛的意義,真正構成了「創造」控制(的CreateChildControls
目的)?這個問題真的延伸到可能具有動態內容的任何控制。在哪裏可以將條目添加到下拉列表中,等等。有很多方法可行,但哪個是「正確的」?是否將選擇添加到「創建」控件的下拉部分?它取決於選擇是否動態?
可能不是一個完整的答案,但是這裏有一些在ASP.NET頁面生命週期中從MSDN讀取的_light_。還請注意頁面底部的一些評論,因爲提供了更多信息/評論。編輯:幫助,如果我包含鏈接:http://msdn.microsoft.com/en-us/library/ms178472.aspx –