• 富数据控件 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>
  • 相关阅读:
    hdoj 4006 The kth great number【优先队列】
    hdoj 1509 Windows Message Queue【优先队列】
    nyoj 55 懒省事的小明【优先队列】
    hdoj 1896 Stones【优先队列】
    nyoj 757 期末考试【优先队列+贪心】
    hdoj 2147 kiki's game【博弈】
    hdoj 1873 看病要排队【优先队列】
    hdoj 1789 Doing Homework again
    nyoj 1036 非洲小孩【贪心区间选点】
    转:栈和队列小知识【STL用法】
  • 原文地址:https://www.cnblogs.com/SkySoot/p/2630307.html
Copyright © 2020-2023  润新知