如何绑定两个表的数据
现在有两个表,是有关联的,比如说a表有id,name字段,b表有id,subid,subname字段,它们通过id关联,现a有数据 (id=1,name=动物) 和 (id=2,name=植物)
b有数据(id=1,name=猫,subid=01) (id=1,name=狗,subid=02) (id=2,name=杨树,subid=03)
(id=2,name=桃花,subid=04)
现在要从数据库中显示这两个表的内容,格式如下:
动物
猫 狗 //where id=1
植物
杨树 桃花
要用什么控件?DataGrid?DataList?还是什么?数据源要从两个表中的内容绑定,要怎样做??我试过用 外连接,但返回数据是这样的:
动物 猫
动物 狗
植物 杨树
植物 桃花
不知道我说的够不够明白,我要怎样绑定数据,望指教!
问题点数:30、回复次数:8Top
1 楼dzvsyt(一笑天)回复于 2005-04-01 23:46:50 得分 20
用DataSet里面的关系:
准备两个repeater:rptParent,rptChild
sql= "select * from a"
Da=New SqlDataAdapter(sql,conn)
Da.Fill(Ds,"parent")
rptParent.DataSource=Ds.Tables("parent")
rptParent.Databind()
sql = "select * from b"
Da=New SqlDataAdapter(sql,conn)
Da.Fill(Ds,"child")
''创建之间关系
Ds.Relations.Add("ddd", Ds.Tables("parent").Columns("id"), Ds.Tables("child").Columns("id"))
<!--父模板开始-->
<asp:repeater id="rtpParent" runat="server">
<itemtemplate>
父表:<%# DataBinder.Eval(Container.DataItem,"name") %></li></b>
<asp:repeater id="rptChild" runat="server" datasource='<%# (Container.DataItem).Row.GetChildRows("ddd")%>'>
子表:<!-- 子Repeater开始 -->
<itemtemplate>
<%# Container.DataItem("subname")%> </itemtemplate>
</asp:repeater>
<!--子Repeater结束-->
</itemtemplate>
</asp:repeater>
<!--父模板结束-->
Top
2 楼tophifi(黑字先生)回复于 2005-04-02 00:07:33 得分 1
upTop
3 楼HONGDUN()回复于 2005-04-02 01:18:02 得分 1
upTop
4 楼yy8866(猫咬狗)回复于 2005-04-02 01:58:59 得分 1
越Top
5 楼ljf96345(纯狼)回复于 2005-04-02 02:05:07 得分 6
http://dotnet.aspx.cc/ShowDetail.aspx?id=54F4C732-AAE2-4135-FB1B-7B4B613BAA33Top
6 楼zedan(kk)回复于 2005-04-03 00:21:39 得分 0
我的代码如下了,可是它只能显示出父表,而子表的数据显示不出来,但跟踪好象可以发现到有 ChildRelations {System.Data.DataRelationCollection.DataTableRelationCollection} System.Data.DataRelationCollection
为什么会这样,下面的代码那里出错了??????急啊!!!!
DataSet ds=new DataSet();
a.Fill(ds,"Category");
b.Fill(ds,"Type");
a.DataSource=ds.Tables["Category"];
a.DataBind();
ds.Relations.Add("myType",ds.Tables["Category"].Columns["CategoryID"],ds.Tables["Type"].Columns["CategoryID"]);
<asp:Repeater id="a" runat="server">
<ItemTemplate>
<b><%# DataBinder.Eval(Container.DataItem,"CategoryName") %></b>
<br>
<asp:Repeater id="b" runat="server"
DataSource='<%# ((DataRowView)Container.DataItem).Row.GetChildRows("myType") %>'>
<ItemTemplate>
<a href=books.aspx?TypeID=<%# DataBinder.Eval(Container.DataItem,"TypeID") %>><%# DataBinder.Eval(Container.DataItem,"TypeName") %></a>
</ItemTemplate></asp:Repeater></ItemTemplate></asp:Repeater>Top
7 楼zedan(kk)回复于 2005-04-03 10:12:38 得分 0
帮忙!Top
8 楼saintqiqi(钻石星辰(www.saintzone.net))回复于 2005-04-03 10:26:01 得分 1
帮顶Top




