DataGridView中一次显示两个表中的数据

DataGridView中一次显示两个表中的数据,第1张

好说,大概思路是把数据库的两个表的内容分别放到两个DataTable里面,再把这两个DataTable放到一个DataSet里面,用DataRelation关系对象把两个DataTable连起来显示就ok了。

如下:

//DataTable1,DataTable2已经建好的内存数据表DataSet1,这是建好的内存//数据库,把刚才的DataTable1,DataTable2添加进去:

DataSet1.Tables.Add(DataTable1);

DataSet1.Tables.Add(DataTable2);

//然后用DataRelation关系对象

DataRelation

relation=new

DataRelation("关系名字",DataTable1.Columns["列名"],DataTable2.Columns["列名"])

GridView1.DataSource=DataSet1

GridView1.DataBind()

基本就是这样,里面方法参数的含义你再研究一下。

如果是oracle的话,可以增加一个伪列进行full join

select

v1.id,v1.user,v1.pass

,v2.id,v2.user,v2.pass

from

(select rownum rn1,id,user,pass from a表 t1) v1

full join

(select rownum rn2,id,user,pass from b表 t2) v2

on v1.rn1=v2.rn2

只是一个思路,如果是access或者sqlserver的可能要改动伪劣的获取方法

另外就是取两个DataTable出来,手工合并

// 直接模拟了两个表,从数据库取DataTable就不写了

DataTable dt1 = new DataTable()

dt1.Columns.Add("id")

dt1.Columns.Add("user")

dt1.Columns.Add("pass")

DataTable dt2 = dt1.Clone()

dt1.Rows.Add(new object[] {1,"a","b" })

dt1.Rows.Add(new object[] {2,"v","m" })

dt2.Rows.Add(new object[] {2,"s","b" })

dt2.Rows.Add(new object[] {3,"l","n" })

DataTable dt_dest = dt1

DataTable dt_source = dt2

if(dt2.Rows.Count >dt1.Rows.Count)

{

dt_dest = dt2

dt_source = dt1

}

dt_dest.Columns.Add("id_b")

dt_dest.Columns.Add("user_b")

dt_dest.Columns.Add("pass_b")

dt_dest.Columns["id_b"].Caption = "id"

dt_dest.Columns["user_b"].Caption = "user"

dt_dest.Columns["pass_b"].Caption = "pass"

for(int i = 0i <dt_source.Rows.Counti++)

{

DataRow dest_row = dt_dest.Rows[i]

DataRow src_row = dt_source.Rows[i]

dest_row["id_b"] = src_row["id"]

dest_row["user_b"] = src_row["user"]

dest_row["pass_b"] = src_row["pass"]

}

dt_dest.AcceptChanges()

dt_dest应该就是你要的数据了


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9429132.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存