關于何種情況下使用DataGrid、DataList或Repeater的一些討論(3)
2024-07-21 02:16:30
供稿:網(wǎng)友
 
datalist控件]
 
  如前所述,datagrid使用表格來顯示數(shù)據(jù)。你也許需要更進一步地控制數(shù)據(jù)的顯示。例如,你想使數(shù)據(jù)在表格中顯示,但不是每行只有一條記錄,而是多條。又或者,你并不想使用表格來顯示數(shù)據(jù),而是只將它們顯示在一系列<span>標簽中。
  datalist放棄了datagrid中列表顯示數(shù)據(jù)的概念,而是使用事先定義好的模板(template)來定制顯示。通過使用模板,可以同時使用html標簽或數(shù)據(jù)綁定。這里的數(shù)據(jù)綁定的形式為:<%# … %>,用來顯示數(shù)據(jù)源中給定條目的數(shù)據(jù)記錄。如下的itemtemplate將會顯示數(shù)據(jù)源中companyname字段:
 
  <asp:datalist runat="server" id="mydatalist">
    <itemtemplate>
      <%# databinder.eval(container.dataitem, "companyname") %>
    </itemtemplate>
  </asp:datalist
 
  通過修改上面的模板,我們可以使companyname字段顯示為粗體字,而contactname字段則以正常式樣顯示在companyname之下。
 
  <asp:datalist runat="server" id="mydatalist">
    <itemtemplate>
      <b><%# databinder.eval(container.dataitem, "companyname") %></b>
      <br />
      <%# databinder.eval(container.dataitem, "contactname") %>
    </itemtemplate>
  </asp:datalist>
 
  對于datalist數(shù)據(jù)源中的每一條記錄,itemtemplate會通過定義html標簽來以相同的樣式顯示數(shù)據(jù)。itemtemplate還支持其它其它6種模板:
  ·alternatingitemtemplate 
  ·edititemtemplate 
  ·footertemplate 
  ·headertemplate 
  ·itemtemplate 
  ·selecteditemtemplate 
  ·separatortemplate 
  默認情況下datalist會將記錄顯示在html表格中。然而,通過設定repeatcolumn屬性,你可以設置在一行中顯示多少條記錄。更進一步,你甚至可以指定datlist的內(nèi)容不顯示在表格中,而是<span>標簽中。這可以通過設定repearlayout屬性來實現(xiàn)。
  通過模板、repeatcolumn和repeatlayout屬性,很明顯datalist在定制數(shù)據(jù)輸出樣式方面較datagrid更具靈活性,使得用戶界面設計可以更加友好。當然,我們還需要進行功能性的對比,如分頁、排序、記錄編輯等等。
  通過edititemindex模板和editcommand,updatecommand以及cancelcommand事件,datalist將支持記錄編輯的功能。不過,比較datagrid而言,這需要耗費更多的開發(fā)時間來實現(xiàn)。這種開發(fā)時間上的不一致主要有兩個原因:
  ·編輯/更新/刪除按鈕在datagrid中可以通過設定editcommandcolumn來自動添加;而在datalist中則需要手動添加。
  ·datagrid的boundcolumn列樣式自動使用文本框控件來顯示記錄編輯界面。而在datalist中,你必須通過edititemtemplate明確地指定使用什么樣的編輯界面。
  實現(xiàn)datalist中的分頁、排序功能同記錄編輯功能情況一樣,并不算非常復雜。這些功能可以通過巧妙的編程加以實現(xiàn),只是耗費一些開發(fā)時間。所以,如果需要用戶對數(shù)據(jù)記錄進行排序或編輯的話,使用datagrid要比使用datalist方便得多。
  datalist的性能要比datagrid好一些,特別是當datalist被包含在form當中時。圖2顯示了wast對datalist的測試。
 
 
圖2:對datalist的每秒請求次數(shù)
 
  可以看出,在被web form包含的情況下,datalist的性能要明顯好于datagrid。