我有一個用戶控件有多個狀態/模式的自定義屬性。如果此屬性在父頁面中設置:我想讓我的控件自動更新。在頁面加載中使用屬性不起作用,因爲它沒有啓動。覆蓋用戶控件上的DataBind,注意事項?
我能想象3種方法來做到這一點:
- 在屬性,我可以添加一個代碼塊,將調用this.DataBind()。
- 我可以通過覆蓋虛擬方法DataBind來添加代碼。
- 我可以創建一個公有的專有Update方法。
我想任何輸入到什麼是一般的最佳實踐。更重要的是,我選擇重寫虛擬方法DataBind。我的僞代碼是這樣的:
public override void DataBind()
{
if (SpecialMode)
{
.. load from database
}
base.DataBind()
}
我對base.DataBind()的排序感興趣。我已經看到它通常放在第一位,但在我從數據庫中加載數據後:我需要數據綁定才能顯示數據。
任何輸入到這些考慮將不勝感激。
要清除:
此控件是一個投票控件。它通常會搜索並加載輪詢以顯示來自Page_Load事件。但是,它也有一個報告模式,允許嵌入控件的頁面更改要顯示的輪詢的ID。此屬性不會在Page_Load中啓動。好吧,這個混亂的一部分是我有一個對象的屬性,我也有一個重複的ViewState屬性,但只有Id。
@DrWily謝謝,這是有道理的。我會等待看看是否有更多的建議。這其中的一些複雜性來自於我使用ViewState存儲狀態數據的事實,但僅僅是爲了方便,我還將對象存儲在屬性中,因此當Id更改其他屬性時應該更改。但第一次,我實際上是從完整的對象中加載Id。所以,除非需要,我真的不想加載完整的對象。我現在看到它有點亂。 – 2010-09-21 22:01:54