使用 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),而不管项目是水平还是垂直地显示。

如果 RepeatDirectionHorizontal 并且RepeatColumnsfive,那么项目将在包含五列的行中显示。

1 2 3 4 5
6 7 8 9 10
11 12 13    

如果 RepeatDirectionVerticalRepeatColumns 设置保持为five,那么项目将分五列呈现,每列的长度等于总的项目数除以五。

1 4 7 10 13
2 5 8 11  
3 6 9 12  

编辑DataList 项目

DataList 控件通过其 EditItemTemplate属性支持对项目数据进行就地编辑。在编辑项目时,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
posted @ 2013-03-10 11:07  天涯海角路  阅读(168)  评论(0)    收藏  举报