Repeater Web 服务器控件声明性语法

更新:2007 年 11 月

创建一个数据绑定列表控件,该控件允许通过为列表中显示的每一项重复使用指定的模板来自定义布局。

<asp:Repeater
    DataMember="string"
    DataSource="string"
    DataSourceID="string"
    EnableTheming="True|False"
    EnableViewState="True|False"
    ID="string"
    OnDataBinding="DataBinding event handler"
    OnDisposed="Disposed event handler"
    OnInit="Init event handler"
    OnItemCommand="ItemCommand event handler"
    OnItemCreated="ItemCreated event handler"
    OnItemDataBound="ItemDataBound event handler"
    OnLoad="Load event handler"
    OnPreRender="PreRender event handler"
    OnUnload="Unload event handler"
    runat="server"
    Visible="True|False"
>
        <AlternatingItemTemplate>
            <!-- child controls -->
        </AlternatingItemTemplate>
        <FooterTemplate>
            <!-- child controls -->
        </FooterTemplate>
        <HeaderTemplate>
            <!-- child controls -->
        </HeaderTemplate>
        <ItemTemplate>
            <!-- child controls -->
        </ItemTemplate>
        <SeparatorTemplate>
            <!-- child controls -->
        </SeparatorTemplate>
</asp:Repeater>

备注

使用 Repeater 控件创建基本的模板数据绑定列表。Repeater 控件没有内置的布局或样式;必须在此控件的模板内显式声明所有的 HTML 布局、格式设置和样式标记。

Repeater 控件不同于其他数据列表控件之处在于它允许您在其模板中放置 HTML 片段。这使您可以创建复杂的 HTML 结构(如表)。例如,若要在 HTML 表中创建一个列表,请通过在 HeaderTemplate 中放置 <table> 标记来开始此表。然后,通过在 ItemTemplate 中放置 <tr> 标记、<td> 标记和数据绑定项来创建该表的行和列。如果要使表中的交替项呈现不同的外观,请使用与 ItemTemplate 相同的内容(除了指定的样式不同之外)创建AlternatingItemTemplate。最后,通过在 FooterTemplate 中放置 </table> 标记完成该表。

下表列出了 Repeater 控件的各种模板。

模板

说明

AlternatingItemTemplate

与 ItemTemplate 元素类似,但在 Repeater 控件中隔行(交替项)呈现一次。通过设置 AlternatingItemTemplate 元素的样式属性,可以为其指定不同的外观。

FooterTemplate

在所有数据绑定行呈现之后呈现一次的元素。典型的用途是关闭在 HeaderTemplate 项中打开的元素(使用如 </table> 的标记)。

说明:

FooterTemplate 不能是数据绑定的。

HeaderTemplate

在所有数据绑定行呈现之前呈现一次的元素。典型的用途是开始一个容器元素(如表)。

说明:

HeaderTemplate 项不能是数据绑定的。

ItemTemplate

为数据源中的每一行呈现一次的元素。若要显示 ItemTemplate 中的数据,请声明一个或多个 Web 服务器控件并设置其数据绑定表达式,以使其计算为 Repeater 控件(即容器控件)的 DataSource 中的字段。下面的示例显示一个示例声明,它显示包含 Label 控件中第一个名称的字段。

First Name:
<asp:Label runat="server"
   Text="<%# Container.DataItem.FirstName %>" />

SeparatorTemplate

在各行之间呈现的元素,通常是分行符(<br> 标记)、水平线(<hr> 标记)等。

说明:

SeparatorTemplate 项不能是数据绑定的。

Repeater 控件没有内置的选择或编辑支持。可以为该控件的 ItemCommand 事件创建处理程序以处理从模板发送到该控件的控件事件。

该控件将其 Item 和 AlternatingItem 模板绑定到在它的 DataSourceDataSourceID 属性中引用的数据结构。(Header, Footer 和 Separator 模板不能绑定到数据。)如果设置了 Repeater 控件的 DataSource 属性,但没有返回任何数据,则该控件将呈现 Header 和 Footer 模板,但不呈现任何项。如果未设置 DataSource 属性,则不会呈现 Repeater 控件。

警告:

文本在 Repeater 控件中显示之前并非 HTML 编码形式。这使得可以在文本中的 HTML 标记中嵌入脚本。如果控件的值是由用户输入的,请务必要对输入值进行验证以防止出现安全漏洞。

有关 Repeater Web 服务器控件的属性和事件的详细信息,请参见 Repeater 类文档。

示例

下面的代码示例演示如何使用 DataSourceID 属性指定 Repeater 控件的数据源。DataSourceID 属性设置为用于检索数据的 SqlDataSource 控件的 ID 属性。加载页之后,Repeater 控件会自动绑定到由 SqlDataSource 控件指定的数据源,并向用户显示数据。

<%@ Page Language="VB" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
  <head>
    <title>Repeater.DataSourceID Property Example</title>
</head>

  <body>
    <form id="Form1" runat="server">

      <h3>Repeater.DataSourceID Property Example</h3>

      <asp:repeater id="Repeater1"       
        datasourceid="SqlDataSource1"
        runat="server">

        <headertemplate>
          <table border="1">
            <tr>
              <td><b>Product ID</b></td>
              <td><b>Product Name</b></td>
            </tr>
        </headertemplate>

        <itemtemplate>
          <tr>
            <td> <%# Eval("ProductID") %> </td>
            <td> <%# Eval("ProductName") %> </td>
          </tr>
        </itemtemplate>

        <footertemplate>
          </table>

        </footertemplate>
      </asp:repeater>

            <asp:sqldatasource id="SqlDataSource1"          
            connectionstring="<%$ ConnectionStrings:NorthWindConnection%>" 
        selectcommand="SELECT ProductID, ProductName FROM [Products] Where ProductID <= 10"
        runat="server">
      </asp:sqldatasource>

    </form>      
  </body>
</html>
<%@ page language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
  <head>
    <title>Repeater.DataSourceID Property Example</title>
</head>

  <body>
    <form id="Form1" runat="server">

      <h3>Repeater.DataSourceID Property Example</h3>

      <asp:repeater id="Repeater1"       
        datasourceid="SqlDataSource1"
        runat="server">

        <headertemplate>
          <table border="1">
            <tr>
              <td><b>Product ID</b></td>
              <td><b>Product Name</b></td>
            </tr>
        </headertemplate>

        <itemtemplate>
          <tr>
            <td> <%# Eval("ProductID") %> </td>
            <td> <%# Eval("ProductName") %> </td>
          </tr>
        </itemtemplate>

        <footertemplate>
          </table>

        </footertemplate>
      </asp:repeater>

            <asp:sqldatasource id="SqlDataSource1"          
            connectionstring="<%$ ConnectionStrings:NorthWindConnection%>" 
        selectcommand="SELECT ProductID, ProductName FROM [Products] Where ProductID <= 10"
        runat="server">
      </asp:sqldatasource>

    </form>      
  </body>
</html>

请参见

参考

Repeater

其他资源

Web 服务器控件语法