国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > 綜合 > 正文

關于何種情況下使用DataGrid、DataList或Repeater的一些討論(4)

2024-07-21 02:16:30
字體:
供稿:網(wǎng)友
[repeater控件]



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

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

  ·alternatingitemtemplate

  ·footertemplate

  ·headertemplate

  ·itemtemplate

  ·separatortemplate

  hedertemplate和footertemplate指定在真正的記錄輸出之前或之后應處理的html內(nèi)容。alternatingitemtemplate和itemtemplate則指定實際的每條輸出記錄的html樣式。如,你需要綁定一個包含雇員信息的dataset到一個repeater,字段名為employeename。如果你想在頁面中不排序地顯示這些記錄,你可以使用如下的語句:



  <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類的,這一點與datagrid和datalist不同。所以,repeater沒有樣式方面的屬性可供設定。也就是說,如果你想格式化輸出repeater的數(shù)據(jù)記錄,你必須使用html標簽來設定樣式。如,在一例中,如果我們想將雇員名字顯示成粗體,我們必須在itemtemplate設置相應的html標簽:



  <itemtemplate>

    <li><b><%# databinder.eval(container.dataitem, "employeename")%></b></li>

  </itemtemplate>



  而如果使用datagrid或datalist,我們只通過設定itemstyle-font-bold屬性為true即可實現(xiàn)。

  repeater在格式化設定上的欠缺,直接反映到開發(fā)時間的延長上來。對輸出數(shù)據(jù)樣式上的越多要求,就越會導致開發(fā)周期的延長。這些在模板中規(guī)定樣式的html標簽也越發(fā)得顯得混亂,而且,在將來頁面更改時會更加困難,特別是當一個新的開發(fā)人員接替工作時。而使用datagrid或datalist你盡可以只設定樣式屬性,而不使用模板。而且,如果使用visual studio.net或asp.net web matrix工作時,這些屬性更可以被直接設定而無需編碼。

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

  repeater唯一優(yōu)于datagrid和datalist的特點是它的性能,尤其明顯優(yōu)于datagrid。圖3說明了這一點。






圖3:對repeater的每秒請求次數(shù)



[結(jié)論]



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

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

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

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



[附錄]



wast測試設定

  測試是在運行microsoft windows 2003 server操作系統(tǒng)的筆記本電腦上完成的。基本配置如下:intel p4 2.4g cpu;512 mb ram;30gb ultra ata hard drive;網(wǎng)頁服務器使用iis 6.0;asp.net版本為1.1。此測試中的wast被設置成使用單線程,每個測試時間為一分鐘。

  測試代碼http://download.microsoft.com/download/9/e/9/9e97b2f8-b317-4751-9ac1-2e34eebec26a/datacontrolsperftest_setup.msi點擊此處下載注冊會員,創(chuàng)建你的web開發(fā)資料庫,
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 穆棱市| 理塘县| 潍坊市| 桐乡市| 乌鲁木齐市| 增城市| 元谋县| 海伦市| 科技| 友谊县| 黄骅市| 清水县| 安远县| 湘西| 万安县| 泽库县| 杨浦区| 遂平县| 南溪县| 临城县| 霞浦县| 海南省| 长宁县| 河南省| 南乐县| 栖霞市| 翁牛特旗| 济阳县| 池州市| 香河县| 西乌| 荔浦县| 高青县| 阿瓦提县| 手游| 北辰区| 都兰县| 格尔木市| 峨眉山市| 顺义区| 徐闻县|