zoukankan      html  css  js  c++  java
  • 艾伟_转载:深入研究 Repeater 狼人:

    在所有这三个数据 Web 控件中,Repeater Web 控件在呈现的 HTML 里提供了最大的灵活性。 DataGrid 或 DataList 会在预设的 HTML 标记中自动包含开发人员指定的内容。与它们不同的是,Repeater 在呈现的时候将严格生成指定的 HTML 标记。 因此,如果不想用 HTML的table或者一系列span,标记显示数据,而希望以其他方式显示数据,就必须使用Repeater 控件。

    就像 DataList 一样,使用 Repeater 时要用模板指定标记。 Repeater 包含下列五个模板:

    AlternatingItemTemplate
    FooterTemplate
    HeaderTemplate
    ItemTemplate
    SeparatorTemplate

    HeaderTemplate 和 FooterTemplate 指定出现在绑定到 Repeater 的数据之前和之后的 HTML 标记。 AlternatingItemTemplate 和 ItemTemplate 指定用于呈现 Repeater 的DataSource中的每条记录的 HTML 标记和数据绑定语法。 例如,假设您要把包含雇员信息的数据集绑定到 Repeater,该数据集的其中一个字段是EmployeeName。如果要在 Web 页上以无序列表的形式显示雇员列表,则可以使用如下 Repeater 语法:

    <asp:Repeater runat="server" id="rptEmployees">
    <HeaderTemplate>
    <ul>
    </HeaderTemplate>
    <ItemTemplate>
    <li><%# DataBinder.Eval(Container.DataItem, "EmployeeName") %></li>
    </ItemTemplate>
    <FooterTemplate>
    </ul>
    </FooterTemplate>
    </asp:Repeater>

    与 DataGrid 和 DataList 不同,Repeater 类不是从WebControl类派生的。 因此,Repeater 缺少 DataGrid 和 DataList 二者共有的样式属性。 这一点归结起来无非是说,如果想对 Repeater 中所显示数据进行格式设置,则必须在 HTML 标记中进行这样的操作。 例如,在上面的例子中,如果想用粗体显示雇员的姓名,则必须更改 ItemTemplate 以包含 HTML 粗体标记,就像下面这样:

    <ItemTemplate>
    <li><b><%# DataBinder.Eval(Container.DataItem, "EmployeeName")
    %></b></li>
    </ItemTemplate>

    然而对于 DataGrid 或 DataList,通过把控件的ItemStyle-Font-Bold属性设置为 True,就能用粗体显示文本了。Repeater 缺少样式属性会大大增加开发的时间指标。 例如,假设决定使用 Repeater 显示数据,这些数据需要以粗体、中间对齐且带有特定背景色的特定字体显示。 所有这些都要用几个 HTML 标记指定,这些标记很快就会使 Repeater 的模板变得凌乱不堪。 这种凌乱会使以后对外观进行更改变得困难得多,尤其是当其他人对该项目进行操作时,则不得不查看大量 HTML 语法。 将这一点与为 DataGrid 或 DataList 指定格式进行比较。 对于这两个控件中的任何一个,都可以通过指定 DataGrid 或 DataList 的样式属性来使模板免于凌乱。 此外,可以用一些工具来自动设置 DataGrid 和 DataList 的样式属性,例如 Microsoft Visual Studio .NET 或 ASP.NET Web Matrix。

    除了延长开发时间之外,Repeater 还缺少有助于支持分页、编辑或数据编辑的内置功能。 由于缺少这些功能支持,Repeater 在可用性的评定中得分很低。 当然,如果所有您感兴趣的只是显示数据,而不用带任何别致的铃声或口哨声,那么 Repeater 的功能匮乏就不是主要缺点了。 我之所以强调“如果”一词是因为,通常,Web 应用程序一旦进行了部署,用户就会发现他们需要附加的功能,例如排序、分页和编辑。

    Repeater 有一个弥补性的品质(这并不令人吃惊),那就是性能。 Repeater 的性能比 DataList 的性能稍微好一点,比 DataGrid 的性能要好很多。图 3 显示了Repeater 每秒能处理的请求数,并与 DataGrid 和 DataList 进行了对比。

  • 相关阅读:
    Solution: Win 10 和 Ubuntu 16.04 LTS双系统, Win 10 不能从grub启动
    在Ubuntu上如何往fcitx里添加输入法
    LaTeX 笔记---Q&A
    Hong Kong Regional Online Preliminary 2016 C. Classrooms
    Codeforces 711E ZS and The Birthday Paradox
    poj 2342 anniversary party
    poj 1088 滑雪
    poj 2479 maximum sum
    poj 2481 cows
    poj 2352 stars
  • 原文地址:https://www.cnblogs.com/waw/p/2157142.html
Copyright © 2011-2022 走看看