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

eteok 2002-07-03 04:45:37
我从专业表(Major)取出一条专业记录,就到课程表(Subject)里根据“专业ID”取出相应的课程,如此循环。
就好像是生成一个2级的树形结构!
用DataGrid 来显示!要怎么做啊??
...全文
54 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
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自动会显示为带有关系的二维表格

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧