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

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

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

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

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

[Repeater控件]



  Repeater控件是三種數(shù)據(jù)控件中在HTML輸出方面最為靈活的控件。Repeater會(huì)按照你所要求的樣式嚴(yán)格地輸出數(shù)據(jù)記錄。所以,如果你不想以表格方式或者簡(jiǎn)單的<span>輸出數(shù)據(jù),那么最好使用Repeater。

  與DataList一樣,Repeater使用模板來指定輸出樣式。Repeater支持如下五種模板:

  ·AlternatingItemTemplate

  ·FooterTemplate

  ·HeaderTemplate

  ·ItemTemplate

  ·SeparatorTemplate

  HederTemplate和FooterTemplate指定在真正的記錄輸出之前或之后應(yīng)處理的HTML內(nèi)容。AlternatingItemTemplate和ItemTemplate則指定實(shí)際的每條輸出記錄的HTML樣式。如,你需要綁定一個(gè)包含雇員信息的DataSet到一個(gè)Repeater,字段名為EmployeeName。如果你想在頁(yè)面中不排序地顯示這些記錄,你可以使用如下的語(yǔ)句:



  <asp:Repeater runat="server" id="rptEmployees">

    <HeaderTemplate>

      <ul>

    </HeaderTemplate>

    <ItemTemplate>

      <li><%# DataBinder.Eval(Container.DataItem, "EmployeeName") %></li>

    </ItemTemplate>

    <FooterTemplate>

      </ul>

    </FooterTemplate>

  </asp:Repeater>



  Repeater類不是繼承自WebControl類的,這一點(diǎn)與DataGrid和DataList不同。所以,Repeater沒有樣式方面的屬性可供設(shè)定。也就是說,如果你想格式化輸出Repeater的數(shù)據(jù)記錄,你必須使用HTML標(biāo)簽來設(shè)定樣式。如,在一例中,如果我們想將雇員名字顯示成粗體,我們必須在ItemTemplate設(shè)置相應(yīng)的HTML標(biāo)簽:



  <ItemTemplate>

    <li><b><%# DataBinder.Eval(Container.DataItem, "EmployeeName")%></b></li>

  </ItemTemplate>



  而如果使用DataGrid或DataList,我們只通過設(shè)定ItemStyle-Font-Bold屬性為True即可實(shí)現(xiàn)。

  Repeater在格式化設(shè)定上的欠缺,直接反映到開發(fā)時(shí)間的延長(zhǎng)上來。對(duì)輸出數(shù)據(jù)樣式上的越多要求,就越會(huì)導(dǎo)致開發(fā)周期的延長(zhǎng)。這些在模板中規(guī)定樣式的HTML標(biāo)簽也越發(fā)得顯得混亂,而且,在將來頁(yè)面更改時(shí)會(huì)更加困難,特別是當(dāng)一個(gè)新的開發(fā)人員接替工作時(shí)。而使用DataGrid或DataList你盡可以只設(shè)定樣式屬性,而不使用模板。而且,如果使用Visual Studio.Net或ASP.Net Web Matrix工作時(shí),這些屬性更可以被直接設(shè)定而無需編碼。

  因?yàn)镽epeater開發(fā)時(shí)間的延長(zhǎng),其在內(nèi)建功能(分頁(yè)、排序及編輯)上的支持也顯得不足。因此在可用性方面,Repeater有著明顯的缺陷。當(dāng)然,<b>如果</b>用戶對(duì)于如何顯示數(shù)據(jù)無所謂的話,這也算不了什么大問題。我之所以強(qiáng)調(diào)這個(gè)“如果”,是因?yàn)楸M管用戶有時(shí)在設(shè)計(jì)時(shí)并不要求能夠分頁(yè)、排序或編輯記錄,但這樣的要求往往會(huì)在開發(fā)后期,或在他們能看到顯示出來的記錄后產(chǎn)生。

  Repeater唯一優(yōu)于DataGrid和DataList的特點(diǎn)是它的性能,尤其明顯優(yōu)于DataGrid。圖3說明了這一點(diǎn)。






圖3:對(duì)Repeater的每秒請(qǐng)求次數(shù)



[結(jié)論]



  在ASP.Net頁(yè)面上顯示數(shù)據(jù)時(shí),多數(shù)的程序員會(huì)選擇他們所熟悉的控件來使用,特別是DataGrid。然而,這樣盲目的選擇在沒有“最好的通用控件”的情況下是不明智的。在選擇控件來顯示數(shù)據(jù)前,不妨問自己幾個(gè)問題來幫助決策:是否允許用戶對(duì)記錄排序?是不是記錄需要顯示在非表格的情況下?頁(yè)面是否會(huì)被高頻度地訪問,因此應(yīng)多考慮性能?

  DataGrid提供了最多的功能,如允許訪問者對(duì)記錄編輯、排序或分頁(yè)。同時(shí)它也是最容易使用的,甚至于簡(jiǎn)單到只需要將之添加到頁(yè)面中而不必額外編寫代碼。不過這些易用性是以性能的損失為代價(jià)的。DataGrid在三種控件中是效率最低的,特別是在使用Web Form的情況下。

  通過使用模板,DataList提供了比DataGrid更加優(yōu)秀的界面效果。不過這需要以犧牲一定的開發(fā)時(shí)間為代價(jià)。為了添加排序、分頁(yè)和編輯功能,程序員不得不花費(fèi)比使用DataGrid更多的精力來進(jìn)行編碼,雖然它的性能要優(yōu)于DataGrid。

  最后,Repeater允許對(duì)數(shù)據(jù)記錄作最大限度的HTML定制。通常,使用Repeater來顯示數(shù)據(jù)記錄比使用DataGrid和DataList要耗費(fèi)更長(zhǎng)的開發(fā)時(shí)間。另外,它不支持內(nèi)建的編輯、排序和分頁(yè)功能。所幸的是,Repeater在性能上要優(yōu)于其它兩種控件,特別是明顯優(yōu)于DataGrid。



[附錄]



WAST測(cè)試設(shè)定

  測(cè)試是在運(yùn)行Microsoft Windows 2003 Server操作系統(tǒng)的筆記本電腦上完成的;九渲萌缦拢篒ntel P4 2.4G CPU;512 MB RAM;30GB Ultra ATA Hard drive;網(wǎng)頁(yè)服務(wù)器使用IIS 6.0;ASP.Net版本為1.1。此測(cè)試中的WAST被設(shè)置成使用單線程,每個(gè)測(cè)試時(shí)間為一分鐘。

  測(cè)試代碼http://download.microsoft.com/download/9/e/9/9e97b2f8-b317-4751-9ac1-2e34eebec26a/DataControlsPerfTest_Setup.

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

本類教程下載

系統(tǒng)下載排行

主站蜘蛛池模板: 色综综| 伊人久久大香线蕉观看 | 天天爱天天操天天射 | 中文字幕中韩乱码亚洲大片 | 免费在线成人网 | 女人18毛片特级一级免费视频 | 怡红院亚洲红怡院在线观看 | 国产高清成人 | 精品国产91久久久久久久a | 久久精品免视看国产盗摄 | 久久免费视频在线观看30 | 97视频在线观看免费 | 国产精品麻豆一区二区三区v视界 | 日韩爱爱网站 | 国产精品久久久久影院 | 日韩欧美毛片免费观看视频 | 青青操精品 | 在线视频一区二区三区四区 | 国产色产综合色产在线观看视频 | 精品国产综合区久久久久99 | 99ee6热久久免费精品6 | 99精品这里只有精品高清视频 | 波多野在线播放 | 伊人影院亚洲 | 四虎影视精品永久免费网站 | 亚洲一级在线 | 黑人与亚洲女人做爰magnet | 日本www在线 | 伊人久久大香线蕉75 | 久久这里只有精品66 | 九九热视频这里只有精品 | 多人伦交性欧美在线观看 | 精品国产品欧美日产在线 | 国产区精品视频 | 中文天堂在线最新2022更新 | 就操网| 精品日韩在线视频 | 色欧美亚洲| 欧美精品亚洲精品日韩专区 | 欧美日韩国产最新一区二区 | 亚洲欧美日韩精品久久 |