2012-01-31 70 views
3

我有一個普遍的問題。我的頁面有幾個安靜的「重」UserControls,每個都放在MultiView視圖中。在PageLoad每個這些控件初始化,導致不必要的數據庫調用。我想要的只是加載其視圖設置爲「活動」的控件。現在我在這些用戶控件的每一箇中都使用公共布爾屬性來設置是否綁定數據,但是有沒有一種常見的方法來執行此操作?什麼是不加載UserControls在頁面加載

+0

提供公共職能'DataBind'並調用來自網頁時,用戶控件是要顯示。一般來說,UserControl的Page_Load中不應該做任何事情。 – 2012-01-31 15:56:12

回答

0

這是我如何做它(類似於您的解決方案)

每個控件實現數據綁定的方法。只有在其顯示的視圖是「活動」時才應調用此方法。 (就像你已經在服務器上做的那樣)。 這些控件中的每一個都只包含一個Literal,我從代碼隱藏中渲染我的HTML。

我也想要更清晰的方式,但控件的OnLoad等方法即使不可見,也會調用。根據我的知識,您必須執行此類數據綁定操作或手動設置屬性的值。

您不應該重寫DataBind方法,因爲即使控件本身的Visible屬性設置爲false,也會調用該方法。 (這是我記得的,但你可以檢查一下,以確保)。更乾淨的方式可能是在覆蓋DataBind方法中檢查您的屬性,並且只有在設置爲true時才執行數據綁定。