前些天在CSDN上看到一個(gè)比較老的帖子,討論的是.NET中數(shù)據(jù)綁定應(yīng)用什么控件更好。在社區(qū)中我也看到有朋友問是否應(yīng)該使用這些控件的問題。我來說說我的想法。希望對(duì)新手有幫助。
先來看看主要的幾個(gè)數(shù)據(jù)綁定控件的區(qū)別:
Repeater, DataList, 和GridView控件基于同樣的編程模型。同時(shí),每個(gè)控件又為著不同的目標(biāo)而設(shè)計(jì),所以,選擇合適的控件非常重要。
從對(duì)象層次圖可以看出,Repeater是最輕最小的控件,它僅僅繼承了基本控件的功能,包括ID屬性、子控件集合等。另一方面,DataList和DataGrid則繼承了WebControl功能,包括樣式和外觀屬性。
從對(duì)象模型看,repeater是最簡(jiǎn)單的控件,它也是最小的數(shù)據(jù)綁定控件,它沒有外觀,也不表現(xiàn)為任何特定的用戶界面。Repeater也支持模板。但它不支持內(nèi)建的樣式和外觀屬性。如果你需要完全控制頁(yè)面,用repeater是一個(gè)最合適的選擇。
DataList具有repeater的功能,并支持外觀控制。它繼承了WebControl的外觀特性,并增加了一些樣式屬性,以控制其子控件的外觀。DataList也支持對(duì)項(xiàng)目的標(biāo)準(zhǔn)操作,比如選擇、編輯、刪除。當(dāng)需要產(chǎn)生橫向或縱向的一系列項(xiàng)目時(shí),采用DataList是最合適的。
GridView控件實(shí)現(xiàn)了表格樣式的列和行。和DataList類似,它也支持外觀和樣式控制。除了支持對(duì)項(xiàng)目的選擇、編輯等操作,GridView還支持對(duì)整個(gè)集合的操作,包括分頁(yè)、排序等等。GridView和DataList的最大不同在于,GridView不包含任何模板屬性,這意味著項(xiàng)目或者表格的行不是模板化的。但是,通過加入TemplateColumn到某個(gè)列,你可以在列上使用模板。
下表概括了列表控件的主要功能:
同時(shí)我們也不能忘了.NET 3.5中給我們提供的新數(shù)據(jù)綁定控件ListView和DataPager,ListView就是DataGrid和 Repeater的結(jié)合體,它既有Repeater控件的開放式模板,又具有DataGrid控件的編輯特性。這絕對(duì)是一個(gè)可以引起你興趣的好東東,因?yàn)樗o你提供了比DataGird豐富得多的布局手段,同時(shí)又具有DataGrid的所有特性。 ListView控件本身并不提供分頁(yè)功能,但是我們可以通過另一個(gè)控件 – DataPager來實(shí)現(xiàn)分頁(yè)的特性。把分頁(yè)的特性單獨(dú)放到另一個(gè)控件里,會(huì)給我們帶來很多好處,比如說可以讓別的控件使用它,又比如說我們可以把它放在頁(yè)面的任何地方。實(shí)質(zhì)上,DataPager就是一個(gè)擴(kuò)展ListView分頁(yè)功能的控件。
微軟給我們開發(fā)提供了這么多好用的控件,我們沒有理由不用他們,當(dāng)然我們應(yīng)該合理適當(dāng)?shù)氖褂眠@些控件。如果只是羅別出來一個(gè)簡(jiǎn)單的顯示數(shù)據(jù),出一對(duì)性能的考慮,repeater必然是首選。如果需要對(duì)數(shù)據(jù)進(jìn)行操作,DataList(首選)和GridView都可以。
當(dāng)然,ListView和DataPager的組合必將是開發(fā)中的黃金組合,無論從性能上和功能實(shí)現(xiàn)上都是很棒的控件。
無論用哪個(gè)控件,都是按需求而定的,在滿足需求的情況下應(yīng)該多方面考慮(如:性能)。就說這些吧,睡覺了...
聯(lián)系客服