程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> ASP.NET自定義控件 第八天 顯示多個條目星級評分的列表控件

ASP.NET自定義控件 第八天 顯示多個條目星級評分的列表控件

編輯:關於ASP.NET

1. 引言

前幾次任務裡我們開發的星級控件只能顯示一個條目的評分,在現實生活中, 經常會遇到需要向用戶展示一系列數據的評分狀態,例如下圖所示:

本次任務裡,我們將一起開發這樣一個控件。

廣告時間——最近在嘗試寫英文文章,申請了一個英文博客www.dev6.cn,歡 迎大家留下墨寶

2. 分析

通過上圖可以看到,該自定義控件是一系列數據評分等級的列表,很顯然需要 作為一個數據綁定控件來實現才可以靈活的顯示多條數據,並且在該列表上方顯 示了標題和當前的日期,為了允許用戶靈活的定義標題和二級標題(當前日期) ,有必要引入模版的概念,由用戶編輯模版,最終按照模版內容顯示。如此看來 再使用DataBoundControl作為自定義控件的基類就不太適合了,因為我們要在該 控件中包含多個子控件,那麼我們應該選擇哪個類作為基類?

回憶一下第六天的任務中數據綁定控件的類關系圖,其中有一個繼承自 DataBoudControl類的CompositeDataBoundControl類,該類是.NET Framework 2.0中新增的一個類,用作綁定到數據源中的數據服務器控件的基類,該定義定義 如下:

public abstract class CompositeDataBoundControl : 

DataBoundControl, INamingContainer

可以看到,該在只是在繼承DataBoundControl類的基礎上實現了 INamingContainer,這意味著該類所包含的子控件都會生成唯一的ID屬性。

但是CompositeDataBoundControl是如何實現數據綁定的呢,換句話說,如果 某一個頁面包含了一個復雜數據綁定控件,在某一個服務器端控件引起回發後, 如何確保數據綁定控件能正確的被填充呢?按照設計,ASP.NET中的數據綁定組合 控件只能從數據綁定中獲取數據,並且不會緩存任何綁定的數據,因此,需要提 供一個特殊的方法來處理回發事件。

再次回顧一下DataBoundControl這個類,我們來分析一下數據是如何被顯示出 來的。在DataBoundControl類上重載了BaseDataBoundControl類上定義的 PerformSelect方法,該方法如下所示:

protected override void PerformSelect()
{
  if (this.DataSourceID.Length == 0)
  {
    this.OnDataBinding(EventArgs.Empty);
  }
  DataSourceView data = this.GetData();
  this._arguments = this.CreateDataSourceSelectArguments();
  this._ignoreDataSourceViewChanged = true;
  base.RequiresDataBinding = false;
  this.MarkAsDataBound();
  data.Select(this._arguments, new
  DataSourceViewSelectCallback(this.OnDataSourceViewSelectCallback));
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved