本文的主要使用了DataRelation建立主从关系.

<%@ Page Language="VB" AutoEventWireup="True" Debug="true"%>
<%@ Import Namespace="System.Data" %>
<%@ Import 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(sender As Object, e As EventArgs) 
         
If Not IsPostBack Then 
            BindGrid()
         
End If
     
End Sub


     
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>