2010-03-03 40 views
2

我想知道關於Web窗體中數據綁定的一些最佳實踐。數據綁定Web窗體中用戶控件的最佳實踐

例如,我們有一個控制:

public partial class MyUserControl : UserControl 
{ 
    public override void DataBind() 
    { 
     //#1 
     base.DataBind(); 
     //#2 
    } 
} 

如果我們想的是控制自動綁定它的數據,我們會做這樣的事情:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!this.IsPostBack) 
    { 
     this.DataBind(); 
    } 
} 

在代碼,如果我們在第一部分在調用base.DataBind()(#1)之前做我們的數據綁定,那意味着如果我們綁定一個ListView,我們不必調用ListView.DataBind(),因爲當我們調用base.DataBind() )在我們的控件上遞歸調用所有子控件上的DataBind。此外,我們將無法訪問使用數據綁定代碼塊分配給它的控件的任何屬性。如果我們在base.DataBind()之後對控件執行綁定, (#2),那麼這意味着DataBind會在這些控件上被調用兩次。一次調用base.DataBind()時,第二次調用control.DataBind()時。

有人知道某種模式,我可以按照這裏,我不知道?

我在這裏有什麼意義嗎?

我在做什麼錯?

編輯: 望着這頁: http://msdn.microsoft.com/en-us/library/w5e5992d.aspx

使用此方法從 源服務器控件數據綁定。 方法通常在 之後通過 數據庫查詢檢索數據集。該方法主要是由控制開發人員使用的 ;大多數控件自動執行數據綁定 。

看來最好的做法是自動綁定控件數據。數據綁定適用於我們明確設置數據源的情況。

回答

1

我以前遇到過問題,當頁面變得複雜,並且您依賴於用戶控件在頁面加載事件中綁定自己的數據。這導致了一些較長的調試會話,因爲當控件中的這個頁面加載事件觸發時,您不能保證剛好是。現在,這就是說,這些網頁設計的不是很好,我們不應該遇到這個問題,但我更願意堅持明確的,讓我的網頁告訴孩子控制何時做他們的事情 - 您可能希望避免調用base.DataBind,而是明確地執行它 - 您也可能不希望以這種方式重寫DataBind方法,而是通過另一個名稱調用控件上的方法。

+0

我同意命名數據綁定方法而不是DataBind,儘管我通常在DataBind方法內調用這些方法!也許不是一個好主意。 – AndrewVos 2010-03-03 09:50:57