日期:2012-02-26  浏览次数:20392 次

NestedRepeater.aspx

&lt;%@ Import Namespace="System.Data" %&gt;&lt;%@ Page language="c#" Codebehind="NestedRepeater.aspx.cs" AutoEventWireup="false" Inherits="eMeng.NestedRepeater" %&gt;<HTML><body><form runat="server"><asp:repeater id="parentRepeater" runat="server"> <itemtemplate> <b> &lt;%# DataBinder.Eval(Container.DataItem,"au_id") %&gt; </b> <br/> <asp:repeater id="childRepeater" runat="server" datasource='&lt;%# ((DataRowView)Container.DataItem).Row.GetChildRows("myrelation") %&gt;'> <itemtemplate> &lt;%# DataBinder.Eval(Container.DataItem, "[\"title_id\"]")%&gt; <br/> </itemtemplate> :repeater> </itemtemplate>:repeater></form></body></HTML>

NestedRepeater.aspx.cs

using System;using System.Data;using System.Data.SqlClient;using System.Web;using System.Web.SessionState;using System.Web.UI;using System.Web.UI.WebControls;namespace eMeng{/// <summary>/// NestedRepeater 的摘要说明。/// 本文介绍如何利用Repeater控件显示主-从关系的表格/// 原文参见:/// http://support.microsoft.com/default.aspx?scid=kb;en-us;306154/// </summary>public class NestedRepeater : System.Web.UI.Page{protected System.Web.UI.WebControls.Repeater parentRepeater;public void Page_Load(object sender, EventArgs e){ // 为Authors表创建 Connection 和 DataAdapter string cnnString = @"server=(local)\NetSDK;database=pubs; Integrated Security=SSPI;"; SqlConnection cnn = new SqlConnection(cnnString); SqlDataAdapter cmd1 = new SqlDataAdapter("select * from authors",cnn); //创建填充 DataSet. DataSet ds = new DataSet(); cmd1.Fill(ds,"authors"); // 为Titles表创建 DataAdapter SqlDataAdapter cmd2 = new SqlDataAdapter("select * from titleauthor",cnn); cmd2.Fill(ds,"titles"); // 创建 Authors 表和 Titles 表之间的关系. ds.Relations.Add("myrelation", ds.Tables["authors"].Columns["au_id"], ds.Tables["titles"].Columns["au_id"]); // 绑定Authors到父Repeater parentRepeater.DataSource = ds.Tables["authors"]; Page.DataBind(); cnn.Close(); cnn.Dispose();}private void Page_Init(object sender, EventArgs e){ InitializeComponent();}private void InitializeComponent(){ this.Load += new System.EventHandler(this.Page_Load);}public NestedRepeater(){ Page.Init += new System.EventHandler(Page_Init);}}}