ASP.Net提供了三個數據控件,使得原本在ASP中繁雜的工作變得簡單。
這三個控件屬於數據Web控件,分別是DataList,DataGrid和Repeater。
一般都是從datagrid開始的(至少我是這樣開始的),每種數據控件
都有其自身的缺陷,因此在程序設計中並不存在最完美的選擇。你必
須權衡三種控件的優缺點並決定哪一種更加適合你的程序。
三者共同點:
1.是用來顯示數據
2.需要來進行綁定
dataWebControlID.DataSource=someDataSource
dataWebControlID.DataBind()
someDataSource 一般是指數據控件的數據源,包括dataset,SqlDataReader
OleDbDataReader或一組數據
DataBind()遍歷一個特點的DataSource中的記錄,並對其中的每條
記錄,建立一個對應的Item集。數據控件中的每條記錄將成為一個實例。
例如,DataGrid中的每個條目是DataGridItem類的一個實例,而Repeater
中的條目則是RepeaterItem類的一個實例。
3.種控件都被允許使用模板顯示數據。
三者的不同點:
DataList 和 Repeater 控件必須使用模板來輸出數據,DataGrid允許通過 TemplateColumn 而只使用模板來顯示一列DataList放棄了DataGrid中列表顯示數據的概念,而是使用事先定義好的模板
(Template)來定制顯示:
<ASP:DataList runat="server" id="myDataList">
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem, "CompanyName") %>
</ItemTemplate>
</ASP:DataList>
ItemTemplate還支持其它其它6種模板:
·AlternatingItemTemplate
·EditItemTemplate
·FooterTemplate
·HeaderTemplate
·ItemTemplate
·SelectedItemTemplate
·SeparatorTemplate
通過EditItemIndex模板和EditCommand,UpdateCommand以及CancelCommand
事件,DataList將支持記錄編輯的功能。
DataList的性能要比DataGrid好一些,特別是當DataList被包含在Form當中時
Repeater控件
Repeater控件是三種數據控件中在Html輸出方面最為靈活的控件,使用模板來
指定輸出樣式。Repeater支持如下五種模板:
·AlternatingItemTemplate
·FooterTemplate
·HeaderTemplate
·ItemTemplate
·SeparatorTemplate
Repeater類不是繼承自WebControl類的,這一點與DataGrid和DataList不同。
Repeater唯一優於DataGrid和DataList的特點是它的性能,尤其明顯優於DataGrid
DataGrid提供了最多的功能,如允許訪問者對記錄編輯、排序或分頁。同時它也是最容易使用的,甚至於簡單到只需要將之添加到頁面中而不必額外編寫代碼。不過這些易用性是以性能的損失為代價的。DataGrid在三種控件中是效率最低的,特別是在使用Web Form的情況下。通過使用模板,DataList提供了比DataGrid更加優秀的界面效果。不過這需要以犧牲一定的開發時間為代價。
$False$為了添加排序、分頁和編輯功能,程序員不得不花費比使用DataGrid更多的精力來進行編碼,雖然它的性能要優於DataGrid。
最後,Repeater允許對數據記錄作最大限度的Html定制。通常,使用Repeater來顯示數據記錄比使用DataGrid和DataList要耗費更長的開發時間。另外,它不支持內建的編輯、排序和分頁功能。所幸的是,Repeater在性能上要優於其它兩種控件,特別是明顯優於DataGrid。