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]%>