富数据控件 LstView(模版、分组)

富数据控件 LstView(模版、分组)

ListView

       ListView 是一个非常灵活的数据绑定控件,根据定义的模版呈现自己的内容。和 Repeater 控件不同,ListView 增加了高级特性(如选择和编辑),它们的工作方式和 GridView 相同。它以最少的标记创建快速、简洁的 Grid 。

       ListView 可以使一个需要更多工作的更灵活的 GridView,也可以使一个提供了更多细节的简化版本的 Repeater(ASP.NET 1.x 中包含的控件)。

       ListView 包括更多的模版:

ItemTemplate 所有数据项或奇数行的内容
AlternatingItemTemplate 偶数行的内容
ItemSeparatorTemplate 在项目中间绘制的分隔内容
SeletedItemTemplate 选定项目的内容
EditItemTemplate 项目在编辑模式中使用的控件
InsertItemTemplate 插入新项目使用的控件
LayoutTemplate 包装项目列表的标记
GroupTemplate 如果使用了分组功能,设置包装项目组的标记
GroupSeparatorTemplate 组之间的分隔内容
EmptyItemTemplate 如果使用了分组,用于填充最后一组里的空项目 例如13个项目,每组5个项目,最后一组缺2个项目
EmptyDataTemplate 设置绑定的数据对象为空(没有包括任何记录或对象)时使用的标记

       使用 ListView 最常见的原因是为了创建不常见的布局!例如,创建在同一个行里显示多个项目的表、或者彻底脱离基于表格的呈现。构建显示大量数据的页面时通常首先考虑使用 GridView,而在更特殊的场景里使用 ListView 。

       为了在 ListView 里显示数据,需要遵循由 TemplateField 列组成 GridView 的同样过程(至少要使用 ItemTemplate 模版):

<asp:ListView ID="listEmployees" DataSourceID="sourceEmployees" runat="server">
    <ItemTemplate>
        <span><b>
            <%# Eval("EmployeeID") %> -
            <%# Eval("TitleOfCourtesy") %><%# Eval("FirstName") %><%# Eval("LastName")%>
        </b><hr />
            <small><i>
                <%# Eval("Address") %><br />
                <%# Eval("City") %>,<%# Eval("Country") %>,<%# Eval("PostalCode") %><br />
                <%# Eval("HomePhone") %>
                </i><br /><br />
                <%# Eval("Notes") %>
                <br /><br />
            </small></span>
    </ItemTemplate>
</asp:ListView>

       ListView 为了呈现自身时,它对绑定的数据进行迭代并为每个项目呈现 ItemTemplate。然后它把自己的所有内容都放到普通的<span>里。

       通常你会希望提供一个 LayoutTemplate 以对项的组织进行更多控制。如果包含了 LayoutTemplate,项目则被放到 LayoutTemplate 里面。看下面这个示例,这个示例与没有 LayoutTemplate 的 ListView 行为相同:

<asp:ListView ID="listEmployees" DataSourceID="sourceEmployees" runat="server">
    <LayoutTemplate>
        <asp:PlaceHolder ID="itemPlaceholder" runat="server"></asp:PlaceHolder>
    </LayoutTemplate>
    <ItemTemplate>
        ...
    </ItemTemplate>
</asp:ListView>

       为 ListView 创建 LayoutTemplate 时需要指定 ItemTemplate 内容应该插入的位置。添加一个占位符可以实现这一点。该元素将为每个绑定的数据项目重复一次,只要把元素的 ID 设为 itemPlaceholder,就可以把该元素作为占位符。

       因为 LayoutTemplate 才使得 ListView 如此灵活!其他数据控件为数据内容而使用模版,ListView 为数据整体结构而使用模版。

分组

       使用分组,首先要设置 GroupItemCount 属性,它决定每个组里数据项的个数:

<asp:ListView ID="listEmployees" GroupItemCount="3" ...>

       设置了分组大小后,还要修改 LayoutTemplate。这是因为总体布局不再包含数据项,它只包含分组,而分组才包含数据项。为了反映这一事实,需要把 ID 从 itemPlaceholder 改为 groupPlaceholder:

<LayoutTemplate>
    <table border="1">
        <tr id="groupPlaceholder" runat="server">
</LayoutTemplate>

       然后要提供 GroupTemplate 用于封装每个组。GroupTemplate 必须提供一个项目占位符:

<GroupTemplate>
    <tr><td runat="server" id="itemPlaceholder" valign="top" />
</GroupTemplate>
原文地址:https://www.cnblogs.com/uddgm/p/4853477.html