
这三个控件大家肯定都非常的熟悉了,我们直接看看它们该在什么场合使用,有什么区别吧。
如果你想要快速、简单的开发: 选择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]%>
由于本人水平有限,很多不足的地方希望各位大哥多多指教^_^
参考:《ASP.NET Cookbook》