前提条件是两个数据表必须满足约束条件。即一个表定义主键,在另一个表中定义外键。如下
user用户表 user_name是主键
id user_name sex age
1 A 1 25
2 B 0 23
3 C 1 22
sale 表 user_name是外键
id user_name products
1 A "p"
2 A "t"
3 B "a"
4 C "e"
建立DataRelation
注意建立ds.Relations.add("myrelation",Da.Tables("A").columns("user_name"),Ds.Tables("B").Columns("User_name"))的顺序
Me.Repeater1.DataSource=DS.Tables("A") 是通过父表访问子表。用Me.Repeater1.DataSource=Ds.Tables("B")来访问父表也是可以的.
在页面上显示:
应用的地方,比如你有repeater做一个数据循环,同时也要根据父表中的数据在访问子表,显示子表也用循环的情况下要用到它。
实际的例子比如。汽车
而汽车下有,卡车、小汽车等
user用户表 user_name是主键
id user_name sex age
1 A 1 25
2 B 0 23
3 C 1 22
sale 表 user_name是外键
id user_name products
1 A "p"
2 A "t"
3 B "a"
4 C "e"
建立DataRelation
Dim DS As DataSet
Dim MyConnection As System.Data.SqlClient.SqlConnection
Dim MyCommand As System.Data.SqlClient.SqlDataAdapter
MyConnection = New System.Data.SqlClient.SqlConnection("server=(local);database=Achem56;uid=tiantian;pwd=tiantian;")
MyCommand = New System.Data.SqlClient.SqlDataAdapter("select * from A order by id asc", MyConnection)
DS = New DataSet
MyCommand.Fill(DS, "A")
Dim Mycommand1 As New System.Data.SqlClient.SqlDataAdapter("select * from B ", MyConnection)
Mycommand1.Fill(DS, "B")
DS.Relations.Add("myrelation", DS.Tables("A").Columns("USER_NAME"), DS.Tables("B").Columns("USER_NAME"))
Me.Repeater1.DataSource = DS.Tables("A")
Page.DataBind()
Dim MyConnection As System.Data.SqlClient.SqlConnection
Dim MyCommand As System.Data.SqlClient.SqlDataAdapter
MyConnection = New System.Data.SqlClient.SqlConnection("server=(local);database=Achem56;uid=tiantian;pwd=tiantian;")
MyCommand = New System.Data.SqlClient.SqlDataAdapter("select * from A order by id asc", MyConnection)
DS = New DataSet
MyCommand.Fill(DS, "A")
Dim Mycommand1 As New System.Data.SqlClient.SqlDataAdapter("select * from B ", MyConnection)
Mycommand1.Fill(DS, "B")
DS.Relations.Add("myrelation", DS.Tables("A").Columns("USER_NAME"), DS.Tables("B").Columns("USER_NAME"))
Me.Repeater1.DataSource = DS.Tables("A")
Page.DataBind()
Me.Repeater1.DataSource=DS.Tables("A") 是通过父表访问子表。用Me.Repeater1.DataSource=Ds.Tables("B")来访问父表也是可以的.
在页面上显示:
<%@ Page Language="vb" AutoEventWireup="false" Codebehind="DataRepeater.aspx.vb" Inherits="application.DataRepeater"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<title>DataRepeater</title>
<meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" content="Visual Basic .NET 7.1">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<FONT face="宋体">
<asp:Repeater id="Repeater1" runat="server">
<HeaderTemplate>
<table width=60% align=center bgcolor=#0000cc >
</HeaderTemplate>
<ItemTemplate>
<Tr bgcolor="#ffffff"><td><%# DataBinder.Eval(Container.DataItem,"id") %> </td><td><%#DataBinder.Eval(Container.Dataitem,"user_name")%> </td></Tr>
<asp:Repeater ID="Repeater2" DataSource='<%#(Container.DataItem).Row.GetChildRows("myrelation") %>' Runat="server" >
<ItemTemplate>
<tr bgcolor="#ffffff"> <td>Products: <%#(Container.dataitem("products"))%></td><td></td></tr>
</ItemTemplate>
</asp:Repeater>
</ItemTemplate>
<FooterTemplate ></table></FooterTemplate>
</asp:Repeater></FONT>
</form>
</body>
</HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<title>DataRepeater</title>
<meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" content="Visual Basic .NET 7.1">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<FONT face="宋体">
<asp:Repeater id="Repeater1" runat="server">
<HeaderTemplate>
<table width=60% align=center bgcolor=#0000cc >
</HeaderTemplate>
<ItemTemplate>
<Tr bgcolor="#ffffff"><td><%# DataBinder.Eval(Container.DataItem,"id") %> </td><td><%#DataBinder.Eval(Container.Dataitem,"user_name")%> </td></Tr>
<asp:Repeater ID="Repeater2" DataSource='<%#(Container.DataItem).Row.GetChildRows("myrelation") %>' Runat="server" >
<ItemTemplate>
<tr bgcolor="#ffffff"> <td>Products: <%#(Container.dataitem("products"))%></td><td></td></tr>
</ItemTemplate>
</asp:Repeater>
</ItemTemplate>
<FooterTemplate ></table></FooterTemplate>
</asp:Repeater></FONT>
</form>
</body>
</HTML>
实际的例子比如。汽车
而汽车下有,卡车、小汽车等