日本国产亚洲-日本国产一区-日本国产一区二区三区-日本韩国欧美一区-日本韩国欧美在线-日本韩国欧美在线观看

當(dāng)前位置:雨林木風(fēng)下載站 > 技術(shù)開發(fā)教程 > 詳細(xì)頁(yè)面

對(duì)于何種情況下運(yùn)用DataGrid、DataList或Repeater的一些討論(1)

對(duì)于何種情況下運(yùn)用DataGrid、DataList或Repeater的一些討論(1)

更新時(shí)間:2020-02-09 文章作者:未知 信息來源:網(wǎng)絡(luò) 閱讀次數(shù):

作者:Scott Mitchell



[概述]



  WEB開發(fā)自從有了基于腳本的WEB編程技術(shù)(如ASP)以來,經(jīng)歷了一個(gè)漫長(zhǎng)的過程。通過使用微軟的ASP.Net技術(shù),傳統(tǒng)的ASP中大量的、單調(diào)乏味的、重復(fù)性的編程工作成為了歷史。例如,象大多數(shù)ASP程序員所知的,在ASP中顯示數(shù)據(jù)庫(kù)內(nèi)容所需要的過程:



  建立數(shù)據(jù)庫(kù)連接

  用SQL查詢裝載ADO數(shù)據(jù)集

  顯示所需要的任何HTML代碼

  遍歷數(shù)據(jù)集中的記錄

    輸出記錄字段值及相關(guān)的HTML

    移向下一條記錄

  循環(huán)

  顯示所需要的HTML代碼



  又如,為了在表格中顯示記錄集的內(nèi)容,我們需要輸出一個(gè)<table>標(biāo)簽,然后開始循環(huán)。在循環(huán)中,每輸出一條記錄,需要先輸出一個(gè)<tr>標(biāo)簽以及若干對(duì)<td>標(biāo)簽和</tr>標(biāo)簽。最后,以一個(gè)標(biāo)簽結(jié)尾。

  在傳統(tǒng)的ASP中使用的這種方法有一個(gè)主要的缺點(diǎn):HTML代碼與ASP源代碼不得不糾纏在一起。對(duì)于那些也許并不理解程序設(shè)計(jì)的頁(yè)面設(shè)計(jì)者或圖形藝術(shù)家來說,想要更改HTML內(nèi)容無(wú)疑是一場(chǎng)災(zāi)難。另外,代碼的產(chǎn)生量也是驚人的,因?yàn)槲覀儾粌H需要從數(shù)據(jù)庫(kù)中取得數(shù)據(jù),還需要使之可視化。

  好在,ASP.Net提供了三個(gè)數(shù)據(jù)控件,使得原本在ASP中繁雜的工作變得簡(jiǎn)單。這三個(gè)控件屬于數(shù)據(jù)Web控件,分別是DataGrid,DataList和Repeater。如果你對(duì)ASP.Net數(shù)據(jù)庫(kù)編程有所了解的話,你至少應(yīng)該有使用其中一種控件的經(jīng)驗(yàn)。大多數(shù)情況下,我們從學(xué)習(xí)使用DataGrid開始,因?yàn)樗墓δ芟鄬?duì)完整(數(shù)據(jù)顯示、分頁(yè)、編輯)并相對(duì)簡(jiǎn)單。然而,DataGrid并非總是正確的選擇。

  本文將分別論述每個(gè)數(shù)據(jù)控件不同于其它數(shù)據(jù)控件的特點(diǎn),以及由此帶來的優(yōu)缺點(diǎn)。正因?yàn)槊糠N數(shù)據(jù)控件都有其自身的缺陷,因此在程序設(shè)計(jì)中并不存在最完美的選擇。你必須權(quán)衡三種控件的優(yōu)缺點(diǎn)并決定哪一種更加適合你的程序。

  為了幫助比較,在對(duì)每個(gè)控件進(jìn)行論述時(shí),我們會(huì)專注于三個(gè)特性:可用性(從頁(yè)面訪問者的角度)、開發(fā)時(shí)間和性能。我們首先描述一下這三種控件的共性,然后分別深入地討論三種控件的特點(diǎn),每種控件如何實(shí)現(xiàn)以及如何體現(xiàn)可用性、開發(fā)時(shí)間和性能。



[數(shù)據(jù)控件(Data Web Controls)的共同點(diǎn)]



  在我們討論三種控件各自特性之前,有必要先看一看它們之間的共同點(diǎn)。一般來說,從編程流程來看,最顯著的共同點(diǎn)就是,這三種控件都是用來顯示數(shù)據(jù)的。另一個(gè)共同點(diǎn)是需要一個(gè)數(shù)據(jù)綁定的代碼來將數(shù)據(jù)與控件綁定。這個(gè)過程只需要兩行代碼:

  

  dataWebControlID.DataSource = someDataSource

  dataWebControlID.DataBind()

  

  一般情況下,someDataSource對(duì)象是指數(shù)據(jù)控件的數(shù)據(jù)源屬性,可以是DataSet,SqlDataReader,OleDbDataReader或一組數(shù)據(jù)(如數(shù)組、數(shù)組列表或其它的屬于System.Collection名空間的類)。不過,任意實(shí)現(xiàn)IEnumerable接口的對(duì)象也可以被綁定在數(shù)據(jù)控件上。

  DataBind()方法遍歷一個(gè)特定的DataSource中的記錄,并對(duì)其中的每條記錄,建立一個(gè)條目并對(duì)應(yīng)數(shù)據(jù)控件的Item集。數(shù)據(jù)控件中的每個(gè)條目將成為一個(gè)類的實(shí)例。這個(gè)類因數(shù)據(jù)控件的不同而有所區(qū)別。例如,DataGrid中的每個(gè)條目是DataGridItem類的一個(gè)實(shí)例,而Repeater中的條目則是RepeaterItem類的一個(gè)實(shí)例。

  之所以使用不同的類來實(shí)例化不同數(shù)據(jù)控件的條目,是因?yàn)椴煌臄?shù)據(jù)控件將會(huì)使用不同的方式顯示數(shù)據(jù)及相應(yīng)的HTML代碼。例如,DataGridItem類繼承自TableRow類,也就是說,每個(gè)DataGridItem的實(shí)例或多或少地可以看成一個(gè)表格中的一行。這是因?yàn)镈ataGrid被設(shè)計(jì)成可以借助HTML中的<table>標(biāo)簽以表格的形式顯示數(shù)據(jù),因此每條記錄就是一個(gè)表格行。而Repeater則被設(shè)計(jì)成可以自由定義數(shù)據(jù)輸出的方式。所以,RepeaterItem并不繼承自TableRow就不奇怪了。

  另一個(gè)三種數(shù)據(jù)控件的相同點(diǎn)是每種控件都被允許使用模板來顯示數(shù)據(jù)。DataList和Repeater控件必須使用模板來輸出數(shù)據(jù),而DataGrid則允許通過TemplateColumn而只使用模板來顯示一列(在DataGrod單元中詳細(xì)論述)。

  另一個(gè)不是十分值得比較的地方是:DataGrid和DataList都是繼承自WebControl類,而Repeater則是繼承自Control類。WebControl類包含一些用于美化的屬性,如:BackColor、ForeColor、CssClass、BorderStyle等等。這說明在使用DataGrid或DataList時(shí),你可以設(shè)定這些屬性來個(gè)性化輸出。Repeater控件則不具有這些屬性。我們會(huì)在Repeater單元討論如何使用模板來美化Repeater的輸出。

溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!

本類教程下載

系統(tǒng)下載排行

主站蜘蛛池模板: 一级毛片无毒不卡直接观看 | 97视频在线观看免费视频 | 欧美在线免费观看亚洲 | 浮力影院最新 | 久久国产精品久久久久久久久久 | 久久草在线视频观看 | 老司机精品99在线播放 | 欧美91av| 手机看片福利盒子 | 中文字幕在线观看一区 | 在线不卡免费视频 | 亚洲国产一区二区三区四区 | 久久99精品久久久久久黑人 | 一区二区三区精品视频 | 中文日本在线 | 久久久久亚洲精品一区二区三区 | 日本高清免费视频www | 久草新视频 | 久久国产欧美日韩精品免费 | 超级碰碰碰碰97久久久久 | 久久精品中文字幕极品 | 欧美日韩网址 | 欧美在线高清视频 | 精品久久影院 | 国产亚洲欧美在线中文无广告 | 久久久久无码国产精品一区 | 日本狠狠干 | 天天爱天天做久久天天狠狼 | 欧美国产亚洲精品a第一页 欧美国产亚洲精品高清不卡 | 欧美怡红院免费的全部视频 | 最近高清中文字幕大全免费1 | 91久久香蕉国产线看 | 国产免费高清视频 | 国产精品夜夜春夜夜爽久久 | 久久网色| 欧美一区二区三区在线视频 | 亚洲线精品一区二区三区 | 亚洲免费在线观看视频 | www.在线 | 国产专区一区 | 久久久久免费 |