DataGrid,DataList,Repeater是我们最常使用的表格化数据显示控件。在它们之间你是不是曾经不知道该怎么选择呢?怎样才能选择到最适合的控件呢?看了以下的内容你大概就会明白了 
        这三个控件大家肯定都非常的熟悉了,我们直接看看它们该在什么场合使用,有什么区别吧。  
        
        如果你想要快速、简单的开发:                          选择DataGrid
        如果你想要轻量级的、只读的表格化显示:      选择Repeater
        如果你想要小巧的、快速的解决方案:              选择Repeater(最快)选择
DataList(比较快) 
        
如果你想要自定义模板的显示:                          选择Repeater     选择DataList
        如果你想要能选择一行并编辑:                          选择DataGrid     选择DataList
        如果你想要能够排序和自动分页的显示:          选择DataGrid 

      3个控件的比较:

特性

Repeater control

DataList control

DataGrid control

默认显示

None (模板控制)

Table

Table

自动根据数据源建立列

No

No

Yes

自定义表格头

Yes

Yes

Yes

自定义行

Yes

Yes

Yes

自定义交互的行

Yes

Yes

Yes

自定义分隔行

Yes

Yes

No

自定义表格脚

Yes

Yes

Yes

支持分页

No

No

Yes

支持排序

No

No

Yes

支持修改内容

No

Yes

Yes

支持选择单行

No

Yes

Yes

支持选择多行

No

No

No

支持水平和垂直的排序方式

No

Yes

No



   通过以上的介绍我相信大家都知道的该怎么选择这3个数据控件了吧^_^

   谈到这里让我再来说说数据绑定的问题。在看过了 JGTM'2003的 《  ASP.NET中的数据绑定:哪个更快? 》后特别指出:

   除非要用到多表的关系、排序、过滤等功能,一般的查看推荐使用DataReader
   
   另外非必要,不要用DataBinder.Eval,应该用((DataRowView)(Container.DataItem))["列名"]/[列索引]的方式来
   访问数据,但使用这种方法,必须在ASPX页面顶部
   加入

<%@ Import Namespace="System.Data.Common" %>

   例:

<%#((DataRowView)(Container.DataItem))["bbs_title"]%>
<%#((DataRowView)(Container.DataItem))[0]%>  //效率高些

   如果要格式化:

<%#string.Format("{0:c}",((DataRowView)(Container.DataItem))[0])%>

 

   要是DataReader绑定的话:

<%#((DbDataRecord)Container.DataItem)[0]%>