本文的主要使用了DataRelation建立主从关系.
<%@ Page Language="VB" AutoEventWireup="True" Debug="true"%>

<%@ Import Namespace =Namespace="System.Data" %>

<%@ Import Namespace =Namespace="System.Data.OleDb" %>
<script runat="server">
Dim MyConnection as OleDbConnection = New OleDbConnection( "Provider=Microsoft.Jet.OLEDB.4.0; Data Source =" + Server.MapPath(".")+"/db/data.mdb")
Dim sql as string ="select * from country where countryid in(select countryid from city)"
Dim sqltext as string ="select * from city order by cityid asc"

Sub Page_Load()Sub Page_Load(sender As Object, e As EventArgs)
If Not IsPostBack Then
BindGrid()
End If
End Sub

Sub BindGrid()Sub BindGrid()
Dim ds As DataSet = new DataSet()
Dim da As OleDbDataAdapter = new OleDbDataAdapter(sql, MyConnection)
da.Fill(ds,"country")
dim dv as DataView =new DataView(ds.Tables("country"))
Dim da2 As OleDbDataAdapter =new OleDbDataAdapter(sqltext,MyConnection)
da2.Fill(ds,"city")
'------------
'Add DataRelation
Dim rel As DataRelation
rel = New DataRelation("countryandcity" , ds.Tables("country").Columns("countryid"),ds.Tables("city").Columns("countryid"))
ds.Relations.Add(rel)
'------------
MyDataGrid.DataSource = dv
MyDataGrid.DataBind()
MyConnection.Close()
End Sub
</script>
<form runat="server">
<asp:DataGrid id="MyDataGrid"
runat="server"
AutoGenerateColumns="False"
Width="150"
ShowFooter="False"
ShowHeader="False"
Border="0">
<HeaderStyle BackColor="#996600"
ForeColor="White"
Font-Bold="True"
HorizontalAlign="Center"/>
<Columns>
<asp:TemplateColumn HeaderText="¹ú¼Ò">
<ItemTemplate>
<TABLE cellSpacing="0" cellPadding="" width="150" align="center" border="0">
<TR BgColor="#C1C1C1">
<TD><B><%# DataBinder.Eval(Container.DataItem,"countryname")%></B></TD>
</TR>
<asp:Repeater id="ChildRepeater" DataSource='<%# CType(Container.DataItem,DataRowView).Row.GetChildRows("countryandcity")%>' runat="server">
<ItemTemplate>
<TR BgColor="#F2F2F2">
<TD>
<A HREF="ShowCity.aspx?cityid=<%#DataBinder.Eval(Container.DataItem, "(cityid)")%>"><%#Container.ItemIndex+1%>.<%# DataBinder.Eval(Container.DataItem, "(cityname)")%></A>
</TD>
</TR>
</ItemTemplate>
</asp:Repeater>
</TABLE>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
</form>