ASP.NET/Data List

维基教科书,自由的教学读本

DataList控件是.NET中的一个控件。DataList控件以表的形式呈现数据(在属性生成器中可以编辑)。通过该控件,可以使用不同的布局来显示数据记录(使用模板编辑)。例如,将数据记录排成列或行的形式。可以对DataList控件进行配置,使用户能够编辑或删除表中的记录(使用EditItemTemplate模板和SelectedItemTemplate模板)。DataList控件不使用数据源控件的数据修改功能,您必须自己提供此代码。

DataList本身不支持数据分页,编程者需要通过自己编写方法完成分页的功能。仅用于数据的显示,不支持编辑、插入、删除。

DataList 与 Repeater比较[编辑]

  • DataList比Repeater多了两个模板:SelectedItemTemplate和EditItemTemplate,支持选择和编辑功能。
  • DataList有可视化的模板编辑和属性编辑,而Repeater控件不指定内置布局,与DataList相比,数据编辑起来比较麻烦。
  • DataList中的内容是以表格的形式呈现数据,这样一来,使数据排列更加美观,而Repeater自己需要添加表格才行。
  • DataList将项显式放在HTML表中,Repeater则不然。

DataList中的模板[编辑]

ItemTemplate、AlternationgItemTemplate、SeparatorTemplate、HeaderTemplate、FooterTemplate、SelectedItemTemplate 、 EditItemTemplate。

容器控件支持事件冒泡[编辑]

.NET框架的三个标准控件Repeater、DataList和DataGrid控件支持事件冒泡。即这些控件可以让捕获其子控件的事件。当子控件产生一个事件时,事件就“冒泡”传给包含该子控件的容器控件,并且容器控件就可以执行一个子程序来处理该事件。

  • EditCommand:由带有CommandName="edit"的子控件产生。
  • CancelCommand:由带有CommandName="cancel"的子控件产生。
  • UpdateCommand:由带有CommandName="update"的子控件产生。
  • DeleteCommand:由带有CommandName="delete"的子控件产生。
  • ItemCommand:容器控件的默认事件。任何容器控件中CommandName为delete/cancel/update/edit的按钮被点击后,事件ItemCommand首先被触发,然后才是相应的事件。

在ASP.NET中Button、LinkButton和ImageButton三个控件带有CommandName属性,可以设置它们的CommandName属性来表示容器控件内产生的时间类型。

DataList默认以ItemTemplate或ItemTemplate + AlternatingItemTemplate模板显示数据项。

当DataList的SelectedIndex属性的值为DataList某一项的索引的时候,对应的项将会以SelectedItemTemplate模板显示。当该属性值为-1时,表示不显示SelectedItemTemplate模板。

容器对象的DataKeys集合[编辑]

容器对象的DataKeys集合保存了数据源的主键的值。事件处理函数中发生事件的项的主键值:DataList1.DataKeys[e.Item.ItemIndex]

数据绑定到DataList后,DataList中的每一项都有一个索引号,第一项的索引为0,依次往下编号。我们可以利用索引来确定DataList中具体的项。

EditItemTemplate[编辑]

DataList控件具有一个名为EditItemTemplate的模板,在EditItemTemplate中放置表单控件,以便能在DataList中编辑特定的项。当DataList的EditItemIndex属性的值为DataList某一项的索引的时候,对应的项将会以EditItemTemplate模板显示;当属性值为-1时,表示不显示EditItemTemplate模板。