首页 > 开发 > 综合 > 正文

关于何种情况下使用DataGrid、DataList或Repeater的一些讨论(3)

2024-07-21 02:16:30
字体:
来源:转载
供稿:网友
datalist控件]



  如前所述,datagrid使用表格来显示数据。你也许需要更进一步地控制数据的显示。例如,你想使数据在表格中显示,但不是每行只有一条记录,而是多条。又或者,你并不想使用表格来显示数据,而是只将它们显示在一系列<span>标签中。

  datalist放弃了datagrid中列表显示数据的概念,而是使用事先定义好的模板(template)来定制显示。通过使用模板,可以同时使用html标签或数据绑定。这里的数据绑定的形式为:<%# … %>,用来显示数据源中给定条目的数据记录。如下的itemtemplate将会显示数据源中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数据源中的每一条记录,itemtemplate会通过定义html标签来以相同的样式显示数据。itemtemplate还支持其它其它6种模板:

  ·alternatingitemtemplate

  ·edititemtemplate

  ·footertemplate

  ·headertemplate

  ·itemtemplate

  ·selecteditemtemplate

  ·separatortemplate

  默认情况下datalist会将记录显示在html表格中。然而,通过设定repeatcolumn属性,你可以设置在一行中显示多少条记录。更进一步,你甚至可以指定datlist的内容不显示在表格中,而是<span>标签中。这可以通过设定repearlayout属性来实现。

  通过模板、repeatcolumn和repeatlayout属性,很明显datalist在定制数据输出样式方面较datagrid更具灵活性,使得用户界面设计可以更加友好。当然,我们还需要进行功能性的对比,如分页、排序、记录编辑等等。

  通过edititemindex模板和editcommand,updatecommand以及cancelcommand事件,datalist将支持记录编辑的功能。不过,比较datagrid而言,这需要耗费更多的开发时间来实现。这种开发时间上的不一致主要有两个原因:

  ·编辑/更新/删除按钮在datagrid中可以通过设定editcommandcolumn来自动添加;而在datalist中则需要手动添加。

  ·datagrid的boundcolumn列样式自动使用文本框控件来显示记录编辑界面。而在datalist中,你必须通过edititemtemplate明确地指定使用什么样的编辑界面。

  实现datalist中的分页、排序功能同记录编辑功能情况一样,并不算非常复杂。这些功能可以通过巧妙的编程加以实现,只是耗费一些开发时间。所以,如果需要用户对数据记录进行排序或编辑的话,使用datagrid要比使用datalist方便得多。

  datalist的性能要比datagrid好一些,特别是当datalist被包含在form当中时。图2显示了wast对datalist的测试。






图2:对datalist的每秒请求次数



  可以看出,在被web form包含的情况下,datalist的性能要明显好于datagrid。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表