Repeater 类

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

**命名空间:**System.Web.UI.WebControls
**程序集:**System.Web(在 system.web.dll 中)

语法

声明
Public Class Repeater
    Inherits Control
    Implements INamingContainer
用法
Dim instance As Repeater
public class Repeater : Control, INamingContainer
public ref class Repeater : public Control, INamingContainer
public class Repeater extends Control implements INamingContainer
public class Repeater extends Control implements INamingContainer

备注

Repeater 控件是一个基本模板数据绑定列表。它没有内置的布局或样式,因此必须在该控件的模板内显式声明所有的布局、格式设置和样式标记。

Repeater 控件是唯一允许在模板间拆分标记的 Web 控件。若要利用模板创建表,请在 HeaderTemplate 中包含表开始标记 (<table>),在 ItemTemplate 中包含单个表行标记 (<tr>),并在 FooterTemplate 中包含表结束标记 (</table>)。

Repeater 控件没有内置的选择功能和编辑支持。可以使用 ItemCommand 事件来处理从模板引发到该控件的控件事件。

Repeater 控件提供两个属性以支持数据绑定。若要将数据绑定到实现 System.Collections.IEnumerable 接口(如 System.Data.DataViewSystem.Collections.ArrayListSystem.Collections.Hashtable 或数组)或 IListSource 接口的任意对象,请使用 DataSource 属性指定数据源。在设置 DataSource 属性时,必须手动编写代码才能执行数据绑定。若要将 Repeater 控件自动绑定到由数据源控件表示的数据源,请将 DataSourceID 属性设置为要使用的数据源控件的 ID。在设置 DataSourceID 属性时,Repeater 控件自动绑定到第一个请求上指定的数据源控件。因此,除非更改了 Repeater 控件的与数据相关的属性,否则不必显式调用 DataBind 方法。

Repeater 控件将其 ItemTemplateAlternatingItemTemplate 绑定到由其 DataSource 属性声明和引用的数据模型,或绑定到由其 DataSourceID 属性指定的数据源控件。HeaderTemplateFooterTemplateSeparatorTemplate 都未进行数据绑定。

如果设置了 Repeater 控件的数据源但未返回数据,该控件将呈现不带项的 HeaderTemplateFooterTemplate。如果数据源为 空引用(在 Visual Basic 中为 Nothing),则不呈现 Repeater

每个 Repeater 控件必须至少定义一个 ItemTemplate。但是,下表中描述的其他可选模板可用来自定义列表的外观。

模板名称

说明

ItemTemplate

定义列表中项目的内容和布局。此模板为必选。

AlternatingItemTemplate

如果定义,则可以确定交替(从零开始的奇数索引)项的内容和布局。如果未定义,则使用 ItemTemplate

SeparatorTemplate

如果定义,则呈现在项(以及交替项)之间。如果未定义,则不呈现分隔符。

HeaderTemplate

如果定义,则可以确定列表标头的内容和布局。如果没有定义,则不呈现标头。

FooterTemplate

如果定义,则可以确定列表注脚的内容和布局。如果没有定义,则不呈现注脚。

警告

此控件可用来显示用户输入,而该输入可能包含恶意的客户端脚本。在应用程序中显示从客户端发送来的任何信息之前,请检查它们是否包含可执行脚本、SQL 语句或其他代码。ASP.NET 提供输入请求验证功能以阻止用户输入中的脚本和 HTML。还提供验证服务器控件以判断用户输入。有关更多信息,请参见 验证服务器控件语法

主题 位置
如何:创建 ASP.NET Web 服务器控件模板 生成 ASP .NET Web 应用程序
演练:到自定义业务对象的数据绑定 在 Visual Studio 中构建 ASP .NET Web 应用程序
如何:使用设计器创建 Web 服务器控件模板 在 Visual Studio 中构建 ASP .NET Web 应用程序
演练:在 Visual Web Developer 中创建和使用 ASP.NET 母版页 在 Visual Studio 中构建 ASP .NET Web 应用程序
如何:绑定到 Visual Studio 的模板化控件中的数据 在 Visual Studio 中构建 ASP .NET Web 应用程序
如何:向 Web 窗体页添加 Repeater Web 服务器控件 (Visual Studio) 在 Visual Studio 中构建 ASP .NET Web 应用程序
演练:在 Visual Web Developer 中创建和使用 ASP.NET 母版页 使用 Visual Web Developer 生成应用程序
如何:以声明方式创建 ASP.NET Web 控件模板 在 Visual Studio 中生成 ASP .NET Web 应用程序
如何:以编程方式向 ASP.NET 网页添加控件 在 Visual Studio 中生成 ASP .NET Web 应用程序
如何:使用设计器创建 Web 服务器控件模板 在 Visual Studio 中生成 ASP .NET Web 应用程序
如何:动态创建 ASP.NET Web 服务器控件模板 在 Visual Studio 中生成 ASP .NET Web 应用程序
如何:向 Web 窗体页添加 Repeater Web 服务器控件 在 Visual Studio 中生成 ASP .NET Web 应用程序
如何:在模板化控件中绑定到数据 在 Visual Studio 中生成 ASP .NET Web 应用程序
演练:到自定义业务对象的数据绑定 在 Visual Studio 中生成 ASP .NET Web 应用程序
如何:绑定到 Visual Studio 的模板化控件中的数据 在 Visual Studio 中生成 ASP .NET Web 应用程序
如何:响应 DataList 或 Repeater 项中的按钮事件 在 Visual Studio 中生成 ASP .NET Web 应用程序
如何:以声明方式创建 ASP.NET Web 控件模板 在 Visual Studio 中生成 ASP .NET Web 应用程序
如何:以编程方式向 ASP.NET 网页添加控件 在 Visual Studio 中生成 ASP .NET Web 应用程序
如何:使用设计器创建 Web 服务器控件模板 在 Visual Studio 中生成 ASP .NET Web 应用程序
如何:动态创建 ASP.NET Web 服务器控件模板 在 Visual Studio 中生成 ASP .NET Web 应用程序
如何:向 Web 窗体页添加 Repeater Web 服务器控件 在 Visual Studio 中生成 ASP .NET Web 应用程序
如何:在模板化控件中绑定到数据 在 Visual Studio 中生成 ASP .NET Web 应用程序
演练:到自定义业务对象的数据绑定 在 Visual Studio 中生成 ASP .NET Web 应用程序
如何:绑定到 Visual Studio 的模板化控件中的数据 在 Visual Studio 中生成 ASP .NET Web 应用程序
如何:响应 DataList 或 Repeater 项中的按钮事件 在 Visual Studio 中生成 ASP .NET Web 应用程序
如何:以声明方式创建 ASP.NET Web 控件模板 生成 ASP .NET Web 应用程序
如何:向 Web 窗体页添加 Repeater 控件 生成 ASP .NET Web 应用程序
如何:以编程方式向 ASP.NET 网页添加控件 生成 ASP .NET Web 应用程序
如何:动态创建 ASP.NET Web 服务器控件模板 生成 ASP .NET Web 应用程序
如何:在模板化控件中绑定到数据 生成 ASP .NET Web 应用程序
如何:响应 DataList、Repeater 或 GridView 项中的按钮事件 生成 ASP .NET Web 应用程序

示例

下面的代码示例演示如何在一页上使用两个简单的 Repeater 控件。DataSource 属性用于指定 Repeater 控件的数据源。第一个 Repeater 在表中显示它的项,第二个 Repeater 在逗号分隔的列表中显示它的项。

<%@ Page Language="VB" AutoEventWireup="True" %>
<html>
 <head>
    <script language="VB" runat="server">

    Sub Page_Load(Sender As Object, e As EventArgs)
        If Not IsPostBack Then
            Dim values As New ArrayList()
            
            values.Add(New PositionData("Microsoft", "Msft"))
            values.Add(New PositionData("Intel", "Intc"))
            values.Add(New PositionData("Dell", "Dell"))
            
            Repeater1.DataSource = values
            Repeater1.DataBind()
            
            Repeater2.DataSource = values
            Repeater2.DataBind()
        End If
    End Sub

    Public Class PositionData
        
        Private myName As String
        Private myTicker As String        
        
        Public Sub New(newName As String, newTicker As String)
            Me.myName = newName
            Me.myTicker = newTicker
        End Sub        
        
        Public ReadOnly Property Name() As String
            Get
                Return myName
            End Get
        End Property        
        
        Public ReadOnly Property Ticker() As String
            Get
                Return myTicker
            End Get
        End Property
    End Class
 
    </script>
 
 </head>
 <body>
 
    <h3>Repeater Example</h3>
 
    <form runat=server>
 
       <b>Repeater1:</b>
         
       <p>
         
       <asp:Repeater id=Repeater1 runat="server">
          <HeaderTemplate>
             <table border=1>
                <tr>
                   <td><b>Company</b></td>
                   <td><b>Symbol</b></td>
                </tr>
          </HeaderTemplate>
             
          <ItemTemplate>
             <tr>
                <td> <%# DataBinder.Eval(Container.DataItem, "Name") %> </td>
                <td> <%# DataBinder.Eval(Container.DataItem, "Ticker") %> </td>
             </tr>
          </ItemTemplate>
             
          <FooterTemplate>
             </table>

          </FooterTemplate>
             
       </asp:Repeater>
       <p>
         
       <b>Repeater2:</b>
       <p>
       <asp:Repeater id=Repeater2 runat="server">
         
          <HeaderTemplate>
             Company data:
          </HeaderTemplate>
             
          <ItemTemplate>
             <%# DataBinder.Eval(Container.DataItem, "Name") %> (<%# DataBinder.Eval(Container.DataItem, "Ticker") %>)
          </ItemTemplate>
             
          <SeparatorTemplate>, </SeparatorTemplate>
       </asp:Repeater>
    </form>
 </body>
 </html>
 
<%@ Page Language="C#" AutoEventWireup="True" %>
<html>
 <head>
    <script language="C#" runat="server">
       void Page_Load(Object Sender, EventArgs e) {
          if (!IsPostBack) {
             ArrayList values = new ArrayList();
 
             values.Add(new PositionData("Microsoft", "Msft"));
             values.Add(new PositionData("Intel", "Intc"));
             values.Add(new PositionData("Dell", "Dell"));
 
             Repeater1.DataSource = values;
             Repeater1.DataBind();
                 
             Repeater2.DataSource = values;
             Repeater2.DataBind();
          }
       }
 
       public class PositionData {
         
          private string name;
          private string ticker;
 
          public PositionData(string name, string ticker) {
             this.name = name;
             this.ticker = ticker;
          }
 
          public string Name {
             get {
                return name;
             }
          }
 
          public string Ticker {
             get {
                return ticker;
             }
          }
       }
 
    </script>
 
 </head>
 <body>
 
    <h3>Repeater Example</h3>
 
    <form runat=server>
 
       <b>Repeater1:</b>
         
       <p>
         
       <asp:Repeater id=Repeater1 runat="server">
          <HeaderTemplate>
             <table border=1>
                <tr>
                   <td><b>Company</b></td>
                   <td><b>Symbol</b></td>
                </tr>
          </HeaderTemplate>
             
          <ItemTemplate>
             <tr>
                <td> <%# DataBinder.Eval(Container.DataItem, "Name") %> </td>
                <td> <%# DataBinder.Eval(Container.DataItem, "Ticker") %> </td>
             </tr>
          </ItemTemplate>
             
          <FooterTemplate>
             </table>

          </FooterTemplate>
             
       </asp:Repeater>
       <p>
         
       <b>Repeater2:</b>
       <p>
       <asp:Repeater id=Repeater2 runat="server">
         
          <HeaderTemplate>
             Company data:
          </HeaderTemplate>
             
          <ItemTemplate>
             <%# DataBinder.Eval(Container.DataItem, "Name") %> (<%# DataBinder.Eval(Container.DataItem, "Ticker") %>)
          </ItemTemplate>
             
          <SeparatorTemplate>, </SeparatorTemplate>
       </asp:Repeater>
    </form>
 </body>
 </html>
 

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

<%@ Page Language="VB" %>

<html>
  <head>
  </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#" %>

<html>
  <head>
  </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>

.NET Framework 安全性

继承层次结构

System.Object
   System.Web.UI.Control
    System.Web.UI.WebControls.Repeater

线程安全

此类型的任何公共静态(Visual Basic 中的 Shared)成员都是线程安全的,但不保证所有实例成员都是线程安全的。

平台

Windows 98、Windows 2000 SP4、Windows Server 2003、Windows XP Media Center Edition、Windows XP Professional x64 Edition、Windows XP SP2、Windows XP Starter Edition

.NET Framework 并不是对每个平台的所有版本都提供支持。有关受支持版本的列表,请参见系统要求

版本信息

.NET Framework

受以下版本支持:2.0、1.1、1.0

请参见

参考

Repeater 成员
System.Web.UI.WebControls 命名空间
DataGrid 类
DataList 类

其他资源

Repeater Web 服务器控件