简介 
       本文描述如何使用嵌套的Repeater 控件来显示分级数据 。当然了,你也可以将这一技术应用到其他的列表绑定控件上去,比如DataGrid包含DataGrid,DataList包含DataList等等的组合。    
    绑定到父表    
    1.添加一个新的Web Form 到应用程序项目中,名称为Nestedrepeater.ASPx. 
    2.从工具箱托动一个Repeater 控件到这个页面上, 设定其ID 属性为 parent . 
    3.切换到HTML 视图. 
    4.选中下列<itemtemplate> 代码,复制到Repeater 控件对应的位置。注意,粘贴的时候请使用“粘贴为html”功能。这些语句包含了数据绑定语法,很简单。       
  <itemtemplate> 
  <b><%# DataBinder.Eval(Container.DataItem, "au_id") %></b><br> 
  </itemtemplate>    
    5.打开Nestedrepeater.aspx.cs 这个代码分离文件。降下列代码添加到Page_Load 事件中,其作用是建立一个到 Pubs (这个数据库是SQL Server的演示数据库。另外在安装.net Framework sdk的时候也会安装这个数据库)数据库的连接,并绑定Authors 表到Repeater 控件    
  public void Page_Load() 
  { 
   SqlConnection cnn = new SqlConnection("server=(local);database=pubs;uid=sa;pwd=;"); 
   SqlDataAdapter cmd1 = new SqlDataAdapter("select * from authors",cnn); 
    DataSet ds = new DataSet(); 
    cmd1.Fill(ds,"authors");    
    //这里将要插入子表的数据绑定    
    parent.DataSource = ds.Tables["authors"]; 
    Page.DataBind(); 
   cnn.Close(); 
  }       
    6.在文件的头部添加下面的名称空间 
    using System.Data.SqlClient; 
    7.根据你自己的情况修改一下连接字符串 
    8.保存并编译应用程序 
    9.在浏览器中打开这个页面,输出结果类似于下面的格式       
  172-32-1176 
  213-46-8915 
  238-95-7766 
  267-41-2394 
  ...    
    绑定到子表    
    1.在页面的HTML视图中,添加下列代码。其目的是增加子Repeater 控件到父Repeater的项目模板中,形成嵌套。    
  <asp:repeater id="child" runat="server"> 
  <itemtemplate> 
  <%# DataBinder.Eval(Container.DataItem, "[\"title_id\"]") %><br> 
  </itemtemplate> 
  </asp:repeater>    
    2.设置子Repeater 控件的DataSource 属性:    
  <asp:repeater ... datasource='<%# ((DataRowView)Container.DataItem) 
  .Row.GetChildRows("myrelation") %>'>    
    3.在页面顶部添加下列指令(请注意,是在.aspx文件中):    
    <%@ Import Namespace="System.Data" %>    
    在.cs文件中,将Page_Load中的注释部分(//这里将要插入子表的数据绑定)替换成下列代码:    
  SqlDataAdapter cmd2 = new SqlDataAdapter("select * from titleauthor",cnn); 
  cmd2.Fill(ds,"titles"); 
  ds.Relations.Add("myrelation", 
  ds.Tables["authors"].Columns["au_id"], 
  ds.Tables["titles"].Columns["au_id"]);    
    4.保存并编译应用程序。 
    .在浏览器中察看修改后的页面。显示格式类似于下面的格式:    
  172-32-1176 
  PS3333 
  213-46-8915 
  BU1032 
  BU2075 
  238-95-7766 
  PC1035 
  267-41-2394 
  BU1111 
  TC7777 
  ...    
  完整的代码    
  Nestedrepeater.aspx 
  <%@ Page Language=C# Inherits="yourprojectname.nestedrepeater" %> 
  <%@ Import Namespace="System.Data" %>    
  <html> 
  <body> 
  <form runat=server>    
  <!-- start parent repeater --> 
  <asp:repeater id="parent" runat="server"> 
    <itemtemplate> 
     <b><%# DataBinder.Eval(Container.Dat