• 全部
  • .NET Framework
  • ASP
  • Web Services
  • .NET互联网桌面应用
  • VB
  • 图表区
  • 分析与设计
  • 组件/控件开发
  • AppLauncher
  • 问答

DataGrid怎么样同时从两个相互关联的表取数据啊??就像是一个2级树!

eteok 2002-07-03 04:45:37
我从专业表(Major)取出一条专业记录,就到课程表(Subject)里根据“专业ID”取出相应的课程,如此循环。
就好像是生成一个2级的树形结构!
用DataGrid 来显示!要怎么做啊??
...全文
15 点赞 收藏 9
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
edge1978 2002-07-04
这样!
SqlConnection cnn = new SqlConnection("server=(local);database=LFounder;uid=sa;pwd=;");
SqlDataAdapter cmd1 = new SqlDataAdapter("select * from TabParent",cnn);
DataSet ds = new DataSet();
cmd1.Fill(ds,"t1");
SqlDataAdapter cmd2 = new SqlDataAdapter("select * from TabChild ",cnn);
cmd2.Fill(ds,"t2");
ds.Relations.Add("relation",
ds.Tables["t1"].Columns["T1_Id"],
ds.Tables["t2"].Columns["T2_pID"]); //子表pID字段对应父表ID字段
dgridSite.DataSource=ds.Tables["t1"];
dgridSite.DataBind();

前面绑定:
<asp:datagrid id="dgridParent" runat="server" autogeneratecolumns="False">
<columns>
<asp:templatecolumn headertext="父表ID">
<itemtemplate>
<%# DataBinder.Eval(Container, "DataItem.T1_ID") %>
<asp:datagrid id="dgridChild" datasource='<%# ((DataRowView)Container.DataItem).Row.GetChildRows("relation") %>' runat="server" autogeneratecolumns="False" backcolor="#ffffff" width="100%" borderwidth="0">
<columns>
<asp:templatecolumn>
<itemstyle horizontalalign="Center"></itemstyle>
<itemtemplate>
<%# DataBinder.Eval(Container.DataItem, "[\"T2_ID\"]")%>
</itemtemplate>
</asp:templatecolumn>
</columns>
</asp:datagrid>
</itemtemplate>
</asp:templatecolumn>
</asp:datagrid>
回复
bluefish922 2002-07-04
你可建SQLDATAADAPTER,填充到DATASET中,然后创建DATAVIEW,把DATAGRID的DATASOURCE指定为该DATAVIEW,然后绑定就行了。
回复
bluefish922 2002-07-04
为什么要用循环,SQL语句不能解决?
你的意思是不是把专业表的每个记录都取出来,然后再到课程表里去找相关的记录?
select major.* ,subject.subname from major left outer join subject on major.majid=subject.myjid
还是把课程表里有专业表记录的都取出来?
select major.*,subject.subname from major,subject where major.majid=subject.majid
回复
eteok 2002-07-04
难道就不能像ASP中一样??先从专业表中取出记录,然后循环1,根据专业ID到课程表中取相关记录,然后循环2!
set rsSub = Conn.execute("select * from Major")
Do while not rsMajo.eof
Response.write rsMajo("MajName")
set rsSub = Conn.execute("select * from Subject where MajID="rsMajo("ID"))
Do while not rsSub.eof
Response.write rsSub("SubName")
rsSub.Movenext
Loop
rsMajo.MoveNext
Loop

在Asp.net中,我不能用一个DataGrid这样实现吗??请高手指点!!
回复
S.F. 2002-07-04
搞那么多事,建立一个视图不就行了吗??
回复
mbm 2002-07-03
用两个datagrid分别绑定dataset中的两个datatable
在第一个datagrid的selectindexchanged事件里重新根据id绑定datagrid2
回复
mmkk 2002-07-03
构建视图吧
回复
hgknight 2002-07-03
这应该是SQL的问题
回复
sonneygao 2002-07-03
将这两个表读入dataset,然后根据"专业id"建立两表之间的关系,然后将此dataset绑定到datagrid中,datagrid自动会显示为带有关系的二维表格
回复
发帖
.NET技术社区
创建于2007-09-28

5.8w+

社区成员

.NET技术交流专区
申请成为版主
帖子事件
创建了帖子
2002-07-03 04:45
社区公告
暂无公告