日期:2010-08-03  浏览次数:20636 次

    如果你正在使用ASP.NET,你一定对DataGrid控件非常熟悉。DataGrid控件提供了各种特性,通过这些特性可以很容易地在一个Web页面上以列表形式显示数据。但是,如果你不想使用HTML表格形式呢?此时,可以使用一个DataGrid的一个鲜为人知的兄弟控件,即Repeater控件。Repeater控件提供显示你所需要数据的灵活性。
  
  Repeater控件是什么?
  
  Repeater是一个可重复操作的控件,也就是说,它通过使用模板显示一个数据源的内容,而你可以很容易地配置这些模板。Repeater包含如标题和页脚这样的数据,它可以遍历所有的数据选项并应用到模板中。
  
  与DataGrid和DataList控件不同,Repeater控件并不是由WebControl类派生而来。所以,它不包括一些通用的格式属性,比如控制字体,颜色,等等。然而,使用Repeater控件,HTML(或者一个样式表)或者ASP.NET类可以处理这些属性。
  
  HTML在哪里?
  Repeater控件与DataGrid (以及DataList)控件的主要区别是在于如何处理HTML。ASP.NET建立HTML代码以显示DataGrid控件,但Repeater允许开发人员决定如何显示数据。所以,你可以选择将数据显示在一个HTML表格中或者一个顺序列表中。这主要取决于你的选择,但你必须将正确的HTML插入到ASP.NET页面中。
  
  模板与DataList一样,Repeater控件只支持模板。以下的模板可供选择:
  
  AlternatingItemTemplate: 指定如何显示每一其它选项。
  ItemTemplate: 指定如何显示选项。(AlternatingItemTemplate可以覆盖这一模板。)
  HeaderTemplate: 建立如何显示标题。
  FooterTemplate: 建立如何显示页脚。
  SeparatorTemplate: 指定如何显示不同选项之间的分隔符。
  你可以使用这些模板来显示你希望的数据。唯一具有强制性的模板是ItemTemplate,所有其它的模板都是具有选择性的。
  
  数据
  对于处理一个数据源,Repeater控件具有与DataGrid与DataList相同的属性:
  
  DataMember:获得或者设置与 Repeater 控件绑定的相应DataSource属性的表格。
  
  DataSource:获得或者设置为 Repeater 显示提供数据的数据源。
  
  除此之外,还有一个Items属性,你可以通过这一属性编程访问Repeater数据中单一选项。它返回一个RepeaterItemCollection对象,为一组RepeaterItem对象的集合,代表 Repeater 数据的每一行。
  
  ASP.NET Web数据控件还有其它一个共性:它们都使用DataBind方法来生成用户界面。调用这一方法可以返回并显示数据(假设DataSource和DataMember属性设置正确)。在查看DataBind方法之前,我们先看看如何在一个Web页面中使用一个Repeater控件。
  
  使用Repeater控件
  使用Repeater控件的第一步骤是决定我们将要使用的数据源和字段。例如,我们将要使用SQL Server Northwind数据库中的Employees列表。Web页面将显示职工的完整名字,地址,以及电话号码。HTML将使用DIV标记,用 Repeater 模板来分隔内容。下面是 Web 页面的 HTML 内容:
  
  <%@ Page language="c#" %>
  <%@ Import Namespace="System.Data" %>
  <%@ Import Namespace="System.Data.SqlClient" %>
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
  <html><head>
  <title>Builder.com Repeater Example</title>
  <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
  <meta name="CODE_LANGUAGE" Content="C#">
  <style>
  .alternate {
  FONT-WEIGHT: bold;
  COLOR: black;
  FONT-FAMILY: Verdana, 'Times New Roman';
  BACKGROUND-COLOR: yellow
  }

   .row {
  FONT-WEIGHT: bold;
  COLOR: black;
  FONT-FAMILY: Verdana, 'Times New Roman';
  BACKGROUND-COLOR: white
  }
  .footer {
  FONT-WEIGHT: bold;
  COLOR: red;
  FONT-FAMILY: Verdana, 'Times New Roman';
  BACKGROUND-COLOR: gray
  }
  .header {
  FONT-WEIGHT: bold;
  COLOR: yellow;
  FONT-FAMILY: Verdana, 'Times New Roman';
  BACKGROUND-COLOR: gray
  }
  .box {
  BORDER-RIGHT: blue groove;
  BORDER-TOP: blue groove;
  DISPLAY: block;
  VERTICAL-ALIGN: baseline;
  OVERFLOW: auto;
  BORDER-LEFT: blue groove;
  CURSOR: wait;
  BORDER-BOTTOM: blue groove;
  FONT-FAMILY: verdana;
  TEXT-ALIGN: center
  }
  body {
  background: #333;
  }