前两天刚看到一个2级repeater联合的例子.
参考吧:
aspx:
<!-- 父Repeater开始 -->
<asp:repeater id="parentRepeater" runat="server">
<itemtemplate>
<b>
<%# DataBinder.Eval(Container.DataItem,"au_id") %>
</b>
<table>
<asp:repeater id="childRepeater" runat="server" datasource='<%# ((DataRowView)Container.DataItem).Row.GetChildRows("myrelation") %>'>
<itemtemplate>
<tr>
<td width=50></td>
<td width=100><%# DataBinder.Eval(Container.DataItem, "[\"title_id\"]")%></td>
<td width=50><%# DataBinder.Eval(Container.DataItem, "[\"au_ord\"]")%></td>
<td width=50><%# DataBinder.Eval(Container.DataItem, "[\"royaltyper\"]")%></td>
</tr>
</itemtemplate>
</asp:repeater>
</table>
</itemtemplate>
</asp:repeater>
<!-- 父Repeater结束 -->
aspx.cs:
// 为Authors表创建 Connection 和 DataAdapter
string cnnString = @"server=(local);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();