使用 DataList
DataList控件在一个重复列表中显示数据项,并且还可以支持选择和编辑项目。可使用模板对DataList 中列表项的内容和布局进行定义。每个 DataList必须最少定义一个ItemTemplate;但是,有好几个可选模板可用于定制列表的外观。下表将描述这些模板。
| 模板名称 | 说明 |
|---|---|
| ItemTemplate | 定义列表中项目的内容和布局。必选。 |
| AlternatingItemTemplate | 如果定义该模板,则确定替换项的内容和布局。如果未定义,则使用ItemTemplate。 |
| SeparatorTemplate | 如果定义该模板,则在各个项目(以及替换项)之间呈现分隔符。如果未定义,则不呈现分隔符。 |
| SelectedItemTemplate | 如果定义该模板,则确定选中项目的内容和布局。如果未定义,则使用ItemTemplate (AlternatingItemTemplate)。 |
| EditItemTemplate | 如果定义该模板,则确定正在编辑项目的内容和布局。如果未定义,则使用ItemTemplate (AlternatingItemTemplate,SelectedItemTemplate)。 |
| HeaderTemplate | 如果定义该模板,则确定列表标题的内容和布局。如果未定义,则不呈现标题。 |
| FooterTemplate | 如果定义该模板,则确定列表脚注的内容和布局。如果未定义,则不呈现脚注。 |
模板定义应为某个项目显示的 HTML元素和控件,以及这些元素的布局。样式格式(字体、颜色和边框属性)通过样式设置。每个模板都有自己的样式属性。例如,EditItemTemplate的样式通过 EditItemStyle 属性设置。
第三组属性影响 DataList的整体呈现。默认情况下,DataList项目在表内作为单个垂直列呈现。把 RepeatLayout 属性设置成Flow 将从列表的呈现形式中移除 HTML 表结构。
DataList 通过 RepeatDirection属性支持按不同的方向呈现,这意味着可以水平或者垂直地呈现它的项目。由于页面宽度是开发人员在Web 用户界面中必须控制的尺寸,DataList允许开发人员控制呈现的“列”数(RepeatColumns),而不管项目是水平还是垂直地显示。
如果 RepeatDirection 是 Horizontal 并且RepeatColumns 是five,那么项目将在包含五列的行中显示。
| 1 | 2 | 3 | 4 | 5 |
| 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 |
如果 RepeatDirection 是 Vertical 而RepeatColumns 设置保持为five,那么项目将分五列呈现,每列的长度等于总的项目数除以五。
| 1 | 4 | 7 | 10 | 13 |
| 2 | 5 | 8 | 11 | |
| 3 | 6 | 9 | 12 |
DataList 控件通过其 EditItemTemplate属性支持对项目数据进行就地编辑。在编辑项目时,EditItemTemplate定义该项目的内容和外观。例如,下列模板包括文本框、“更新”按钮和“取消”按钮。
Item: <asp:TextBox id="Text1" runat="server"
Text='<%#((DataRowView)Container.DataItem)["Item"] %>'
<//><br>
<asp:LinkButton id="button1" runat="server"
Text="Update"
CommandName="update"
/>
<asp:LinkButton id="button2" runat="server"
Text="Cancel"
CommandName="cancel"
/>
</EditItemTemplate>
EditItemTemplate 与另一个属性 EditItemIndex进行交互。默认情况下,EditItemIndex 的值为-1,这意味着列表中没有任何正在编辑的项目。当 EditItemIndex设置到某个特定项目时,使用 EditItemTemplate 显示该项目。
DataList 还提供了三个可用于支持编辑操作的事件。当在列表的ItemTemplate 上单击“编辑”命令按钮控件时,将引发EditCommand。您应用自己的代码处理此事件。通常的逻辑是把EditItemIndex 设置到选定的项目,然后将数据重新绑定到DataList,如下例所示。
protected void DataList_EditCommand(object Source,DataListCommandEventArgs e) {
DataList1.EditItemIndex = (int)e.Item.ItemIndex;
BindList();
}
protected void DataList_CancelCommand(object Source, DataListCommandEventArgs e) { DataList1.EditItemIndex

浙公网安备 33010602011771号