日期:2009-05-22  浏览次数:20981 次

 

向页添加 Repeater Web 服务器控件需要若干步骤。下列过程描述创建一个工作的 Repeater 控件必须执行的最少步骤。

向 Web 窗体页添加 Repeater Web 服务器控件

  1. 向 Web 窗体页添加一个数据源。有多种方法可处理页上的数据。若要选择适当的方法,请参见 ADO.NET 数据访问介绍和对 Web 窗体页中数据访问的介绍。
  2. 在“设计”视图中,从“工具箱”的“Web 窗体”选项卡将 Repeater 控件拖到页面上。
  3. 设置控件的 DataSource 属性。在“属性”窗口中,DataSource 属性的下拉菜单中将显示所有数据源,例如在页上定义的 DataSet 和 DataView 控件。
  4. 调用控件的 DataBind 方法。通常使用如下所示代码在该页的 Page_Load 事件中完成此操作,此处 Repeater1 控件绑定到 DataSet 对象。由于 DataSet 已在设计器中绑定到 Repeater 控件,所以它不需要在该代码中进行绑定:
    ' Visual Basic
    Protected Sub Page_Load(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles MyBase.Load
       ' Put user code to initialize the page, including data, here. 
       Repeater1.DataBind()
    End Sub
    
    // C#
    protected void Page_Load(object sender, EventArgs e)
    {
       // Put user code to initialize the page, including data, here.
       Repeater1.DataBind();
    }
  5. 切换到“HTML”视图。
  6. 在 Repeater 元素内创建包含 HTML 文本和控件的模板,以显示数据。有关详细信息,请参见 Web 服务器控件模板。有关 ItemTemplate 元素的主干可能会如下所示:
    <asp:repeater id=Repeater1 runat="server" datasource="<%# dataView1 >">
       <ItemTemplate>
       </ItemTemplate>
    </asp:repeater>
  7. 向模板添加 HTML 元素和 Web 服务器控件的任意组合以显示数据源信息。

    必须通过包括一个数据绑定表达式将控件绑定到数据。通常,将它们绑定到容器控件。显示数据源中每行的“EmployeeName”和“PhoneNumber”字段的 ItemTemplate 元素将类似如下所示:

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

    有关详细信息,请参见 Web 窗体页中的数据访问。

下面的示例说明一个完整的 Repeater 控件定义在“HTML”视图中应类似于什么样子。指定将 Repeater 控件呈现为表。<table> 元素在 HeaderTemplate 中开始并在 FooterTemplate 中结束。(“任务列表”将报告有关这种情况的错误,但是这些错误可以安全地忽略,在运行应用程序时,该表将正确地显示。)在 Repeater 控件体内,表单元格用于显示数据源的列。除了表单元格的背景色不同以创建带状效果外,AlternatingItemTemplate 元素与 ItemTemplate 项相同。

<asp:Repeater id=Repeater1 runat="server" DataSource="<%# DataView1%>">
   <HeaderTemplate>
      <table width="100%" style="font: 8pt verdana">
      <tr style="background-color:DFA894">
         <th> First Name </th>
         <th> Last Name </th>
      </tr>
   </HeaderTemplate>
   <ItemTemplate>
      <tr>
         <td><%# DataBinder.Eval(Container, "DataItem.EmployeeName") %> 
         </td>
         <td><%# DataBinder.Eval(Container,"DataItem.PhoneNumber") %> 
         </td>
      </tr>
   </ItemTemplate>
   <AlternatingItemTemplate>
      <tr>
         <td bgcolor="lightblue">
         <%# DataBinder.Eval(Container, "DataItem.EmployeeName") %> </td>
         <td bgcolor="lightblue">
         <%# DataBinder.Eval(Container,"DataItem.PhoneNumber") %> </td>
      </tr>
   </AlternatingItemTemplate>
   <FooterTemplate> </table> </FooterTemplate>
</asp:Repeater>

下面的示例使用标签 (Label) 控件显示数据库的值。使用分隔符模板创建列表中值之间的分隔符。请注意,Label 控件的 Text 属性的值包含在单引号中。属性值通常放在双引号中,但是由于 DataBinder 调用包含双引号,所以 Text 属性值必须括在单引号中。

<asp:Repeater id="Repeater1" runat="server" DataSource="<%# DataView1%>">
   <ItemTemplate>
      <asp:Label id=Label1 runat="server" 
         Text='<%# DataBinder.Eval(Container, "DataItem.EmployeeName")%>'>
      </asp:Label>
   </ItemTemplate>
   <SeparatorTemplate>,</SeparatorTemplate>
</asp:Repeater>