[ DataList 控件 ]
如前所述, DataGrid 使用表格来显示数据。你也许需要更进一步地控制数据的显示。例如,你想使数据在表格中显示,但不是每行只有一条记录,而是多条。又或者,你并不想使用表格来显示数据,而是只将它们显示在一系列
1<span> 标签中。
2
3DataList 放弃了 DataGrid 中列表显示数据的概念,而是使用事先定义好的模板( Template )来定制显示。通过使用模板,可以同时使用 HTML 标签或数据绑定。这里的数据绑定的形式为: ```
4# …
5``` ,用来显示数据源中给定条目的数据记录。如下的 ItemTemplate 将会显示数据源中 CompanyName 字段:
6
7<asp:datalist id="myDataList" runat="server">
8<itemtemplate>
DataBinder.Eval(Container.DataItem, "CompanyName")
1
2</itemtemplate>
3</asp:datalist>
4<itemtemplate>
5<b>```
6# DataBinder.Eval(Container.DataItem, "CompanyName")
7```</b>
8<br/>
DataBinder.Eval(Container.DataItem, "ContactName")
1
2</itemtemplate>
3
4
5对于 DataList 数据源中的每一条记录, ItemTemplate 会通过定义 HTML 标签来以相同的样式显示数据。 ItemTemplate 还支持其它其它 6 种模板:
6
7· AlternatingItemTemplate
8
9· EditItemTemplate
10
11· FooterTemplate
12
13· HeaderTemplate
14
15· ItemTemplate
16
17· SelectedItemTemplate
18
19· SeparatorTemplate
20
21默认情况下 DataList 会将记录显示在 HTML 表格中。然而,通过设定 RepeatColumn 属性,你可以设置在一行中显示多少条记录。更进一步,你甚至可以指定 DatList 的内容不显示在表格中,而是 <span> 标签中。这可以通过设定 RepearLayout 属性来实现。
22
23通过模板、 RepeatColumn 和 RepeatLayout 属性,很明显 DataList 在定制数据输出样式方面较 DataGrid 更具灵活性,使得用户界面设计可以更加友好。当然,我们还需要进行功能性的对比,如分页、排序、记录编辑等等。
24
25通过 EditItemIndex 模板和 EditCommand , UpdateCommand 以及 CancelCommand 事件, DataList 将支持记录编辑的功能。不过,比较 DataGrid 而言,这需要耗费更多的开发时间来实现。这种开发时间上的不一致主要有两个原因:
26
27·编辑 / 更新 / 删除按钮在 DataGrid 中可以通过设定 EditCommandColumn 来自动添加;而在 DataList 中则需要手动添加。
28
29· DataGrid 的 BoundColumn 列样式自动使用文本框控件来显示记录编辑界面。而在 DataList 中 , 你必须通过 EditItemTemplate 明确地指定使用什么样的编辑界面。
30
31实现 DataList 中的分页、排序功能同记录编辑功能情况一样,并不算非常复杂。这些功能可以通过巧妙的编程加以实现,只是耗费一些开发时间。所以,如果需要用户对数据记录进行排序或编辑的话,使用 DataGrid 要比使用 DataList 方便得多。
32
33DataList 的性能要比 DataGrid 好一些,特别是当 DataList 被包含在 Form 当中时。图 2 显示了 WAST 对 DataList 的测试。
34
35
36
37图 2 : 对 DataList 的每秒请求次数
38
39可以看出 , 在被 Web Form 包含的情况下 , DataList 的性能要明显好于 DataGrid 。</span></span>