自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

小議ASP.NET數(shù)據(jù)Web控件之間的異同

開發(fā) 后端
本文對三個主要的ASP.NET數(shù)據(jù)Web控件,即DataGrid、DataList和Repeater的異同之處做了一些研究。三個控件都是用于顯示數(shù)據(jù)的。

ASP.NET數(shù)據(jù)Web控件也就是DataGrid、DataList和Repeater。研究差異之前首先要了解相似性。從較高級別觀點來看,最基本的相似性是,DataGrid、DataList 和 Repeater都設計為了執(zhí)行大致相同的操作: 顯示數(shù)據(jù)。 另一個相似性把數(shù)據(jù)綁定到數(shù)據(jù) Web 控件所需的代碼。 具體地說,只需要下面兩行代碼:

  1. dataWebControlID.DataSource = someDataSource  
  2. dataWebControlID.DataBind()  

通常,賦給ASP.NET數(shù)據(jù)Web控件的

DataSource

屬性的

someDataSource

對象是一個 DataSet、SqlDataReader、OleDbDataReader 或一個集合(如 Array、ArrayList 或

System.Collections

命名空間中的其他某個類)。 但是,任何實現(xiàn) IEnumerable 接口的對象都可以綁定到數(shù)據(jù) Web 控件。

DataBind()

方法枚舉指定的

DataSource

中的記錄。 對于

DataSource

中的每一條記錄,都會創(chuàng)建一個項并追加到數(shù)據(jù) Web 控件的

Items

集合中。 數(shù)據(jù) Web 控件中的每一項都是一個類實例。 用于控件每一項的特定類取決于該數(shù)據(jù) Web 控件。 例如,DataGrid 中的每一項都是

DataGridItem

類的一個實例,而 Repeater 中的每一項都是

RepeaterItem

類的一個實例。

每個數(shù)據(jù) Web 控件會為它的每一項使用不同的類,因為是這些項呈現(xiàn)的方式決定了數(shù)據(jù) Web 控件生成的 HTML 標記。 例如,DataGridItem 類是從

TableRow

類中派生的,這意味著每個

DataGridItem

都或多或少地呈現(xiàn)為一個表行。 這很有意義,因為 DataGrid 設計為在 HTML

< table>

標記內以表格形式顯示數(shù)據(jù),在 HTML

< table>

中,每一項都呈現(xiàn)為單獨一行。 另一方面,Repeater 設計為允許對它的輸出進行完全自定義。 因此,RepeaterItem 類不從

TableRow

類中派生并不令人驚訝。

ASP.NET數(shù)據(jù)Web控件之間的另一個相似性是每個控件都能使用模板提供高度自定義的輸出。 DataList 和 Repeater 控件必須 使用模板指定它們的內容,而 DataGrid 則通過 TemplateColumn 列類型可以為特定的列選擇使用模板(我們將在下一節(jié)“研究 DataGrid Web 控件”中討論各種不同的 DataGrid 列類型)。

最后一個值得注意的是 DataGrid 和 DataList 控件是從

WebControl

類中派生的,而 Repeater 控件是從

Control

類中派生的。

WebControl

類包含許多美學方面的屬性,例如

BackColor

、

ForeColor

、

CssClass

、

BorderStyle

等。 這意味著如果使用 DataGrid 和 DataList,就可以通過它們從

WebControl

類中繼承的屬性指定樣式設置。 而 Repeater 沒有任何這樣的樣式屬性。

ASP.NET數(shù)據(jù)Web控件的區(qū)別與選擇

在 ASP.NET Web 頁面中顯示數(shù)據(jù)時,很多開發(fā)人員都選擇他們最熟悉的數(shù)據(jù) Web 控件,通常是 DataGrid。 但是這樣的盲目決定不夠明智,因為根本沒有通用的“最好的”數(shù)據(jù) Web 控件。 決定為給定的 Web 頁使用哪個數(shù)據(jù) Web 控件時,應該先就以下各種問題自己考慮一下,以確定哪個控件最適合手邊的任務。 您想允許用戶對數(shù)據(jù)進行排序嗎? 需要把數(shù)據(jù)用非 HTML

< table>

的格式顯示嗎? 頁面會被大量訪問嗎,因而性能是一個關鍵的問題嗎?

因為 DataGrid 能允許最終用戶排序、分頁和編輯它的數(shù)據(jù),所以這三個數(shù)據(jù) Web 控件中 DataGrid Web 控件提供了最好的功能集。 因為使用 DataGrid 時只需要把它添加到 Web 頁面中并寫幾行代碼,所以 DataGrid 也是最簡單易用的數(shù)據(jù) Web 控件。 但是,容易使用和強大的功能是要付出代價的,如性能的代價: DataGrid 是三個數(shù)據(jù) Web 控件中效率最低的,特別是當把它放置在 Web 窗體中時。

通過使用模板,DataList 對顯示的數(shù)據(jù)外觀提供了比 DataGrid 更多的控制。 但是,使用模板通常比使用 DataGrid 的列類型需要更多的開發(fā)時間 DataList 還支持數(shù)據(jù)的內聯(lián)編輯,但是實現(xiàn)起來需要的工作量比 DataGrid 多。 遺憾的是,在 DataList 中提供分頁和排序支持不是一件簡單的事。 DataList 比 DataGrid 提供了更好的性能,從而彌補了這些缺少的內置功能。

最后,Repeater 控件允許對呈現(xiàn)的 HTML 標記進行完整和全面的控制。 對于 Repeater,生成的唯一 HTML 是模板中數(shù)據(jù)綁定語句的值和模板中指定的 HTML 標記,而不會生成象 DataGrid 和 DataList 那樣的“額外”HTML。 由于要求開發(fā)人員指定完整生成的 HTML 標記,所以通常 Repeater 需要的開發(fā)時間最長。 而且,Repeater 不提供內置編輯、排序或分頁支持。 但是,Repeater 的性能確實是這三個數(shù)據(jù) Web 控件中最好的。 它的性能可與 DataList 相比,但明顯比 DataGrid 好。

【編輯推薦】

  1. 從傳統(tǒng)ASP到ASP.NET的轉變:了解控件
  2. ASP.NET調試API之Log4net使用指南
  3. 使用ASP.NET模板生成HTML靜態(tài)頁面的五種方案
  4. ASP.NET Login控件使用方法及須知
  5. 什么是ASP.NET MVC,以及其優(yōu)點概覽
責任編輯:yangsai 來源: MSDN
相關推薦

2009-08-03 15:43:22

asp.net控件

2009-08-07 17:41:07

ASP.NET Web

2009-07-30 12:42:19

html控件和web控

2009-10-09 10:52:43

ASP.NET模板引擎

2009-08-17 10:16:26

ASP.NET的WEB

2009-07-27 13:52:36

Panel控件ASP.NET

2009-07-28 14:22:05

數(shù)據(jù)源控件ASP.NET

2009-07-24 17:15:52

SiteMapData

2009-08-04 15:20:59

ASP.NET數(shù)據(jù)驗證數(shù)據(jù)驗證控件

2009-08-07 15:34:15

ASP.NET數(shù)據(jù)綁定

2012-09-26 09:46:29

ASP.NETWeb框架

2009-09-11 09:09:00

ASP.NETAdRotator控件

2009-07-20 13:32:24

ScriptManagASP.NET

2009-08-04 11:29:14

HTML代碼ASP.NET控件

2009-07-24 15:35:00

ASP.NET Gri

2009-08-04 10:43:59

ASP.NET控件開發(fā)

2009-08-19 13:44:00

ASP.NET Lis

2009-07-29 13:50:26

UpdatePanelASP.NET

2009-08-05 15:57:03

ASP.NET控件ID

2009-08-17 09:24:25

ASP.NET控件
點贊
收藏

51CTO技術棧公眾號