datagrid绑定dataset的多个datatable---在线等

zhujiaozi 2003-12-12 03:38:05
我想table1(col1,col2,col3),table2(col4,col1,col5) table1与table2通过col1连接,datagrid显示col4,col2,col3,col4.我不想用连接sql语句的方法,而是通过在fill(dataset1,table1)和fill(dataser1,table2)
我已经问了一次了,但是没有人解决,大家帮帮忙吧。最好有代码。
邮箱:zhujiaozi@tom.com

...全文
106 10 打赏 收藏 举报
写回复
10 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
triout 2003-12-13
如果你不想通过SQL来实现,那么这个问题就麻烦了。
下面的可以给你参考:

1——
首先FILL数据到DATASET,生成TABLE1和TABLE2。

2——
在DATASET中创建一个新表TABLE3,该表的列就是TABLE1和TABLE2中的所有列(重复列只取一个)

3——
使用循环,把TABLE1和TABLE2连接填入TABLE3中。

for(int i=0;i<table1.rows.count;i++)
{
for(int j=0;j<table2.rows.count;j++
{
if(table1.rows[i]["col1"]==table2.rows[j]["col1"])
{
datarow dr=table3.newrow();
//这个给dr的各字段赋值
table3.rows.add(dr);
break;
}
}
}

4——
把table3绑定到你的DATAGRID。

以上的方法中,在第三步时可能很耗资源。

另外的一个变通是:不创建表table3,而在table1(或table2)中把table2(或table1)中在table1(或table2)中不存在的字段添加进去,然后使用下面的代码实现:

for(int i=0;i<table1.rows.count;i++)
{
for(int j=0;j<table2.rows.count;j++)
{
if(table1.rows[i]["col1"]==table2.rows[j]["col"])
{
datarow dr=table1.rows[i];
//这里把table2中的数据复制到table1中
break;
}
}
}
  • 打赏
  • 举报
回复
sjzwinfor 2003-12-13
两个DataTable来绑定到DataGrid

--------------------------------------------------------------------------------
源作者:追风 人气:3063


private DataView CreateDataView()
{
SqlDataAdapter cmd=null;
DataSet ds=null;
string cmdSelect = "Select * from table1";
string cmdSelect1 = "Select * from table2";



cmd = new SqlDataAdapter(cmdSelect, Conn);
ds = new DataSet();
cmd.Fill(ds, "ACCOUNT");



if(Conn.State != ConnectionState.Closed)
Conn.Close();
cmd=new SqlDataAdapter(cmdSelect1, Conn);
cmd.Fill(ds, "ACCOUNT1");



DataTable dtParent=ds.Tables["ACCOUNT"];
DataTable dtChild=ds.Tables["ACCOUNT1"];
DataRow dr;
for(int i=0;i<dtChild.Rows.Count;i++)
{
dr=dtParent.NewRow();
for(int j=0;j<dtParent.Columns.Count;j++)
{
dr[j]=dtChild.Rows[i][j];
}
dtParent.Rows.Add(dr);
}
return ds.Tables["ACCOUNT"].DefaultView;
}


  • 打赏
  • 举报
回复
shang515 2003-12-12
为DataGrid添加绑定列:col4,col2,col3,col4
(注意:不要为col4添加绑定字段)
使用Table1做为数据源
为DataGrid添加ItemDataBound事件,在事件中根据当前Item查询Table2中的对应的col4的值,并为列col4赋值……

DataRow[] rows = table2.Select("col4='"+e.Item.Cells[0].Text);
if(e.Item.ItemType != ListItemType.Header)//不是列头
{
if(rows.Count != 0)
Item.Cells[3].Text = rows[0]["col4"].ToString();
}
  • 打赏
  • 举报
回复
zhujiaozi 2003-12-12
怎么没有人????
  • 打赏
  • 举报
回复
zhujiaozi 2003-12-12
这些我都知道,但是我不知道如何把table2中的外键列替换为table1的数据,思归告诉我需要在ItemDataBound时间进行绑定,我只知道如何在事件中绑定下拉列表或者lable,但不知道这种情况如何绑定。
  • 打赏
  • 举报
回复
guoyan19811021 2003-12-12
sorry
cmd.Fill(dst, "a")
cmd = New OleDb.OleDbDataAdapter("select * from b", conn)
cmd.Fill(dst, "b")
Dim a As DataTable = New DataTable
Dim b As DataTable = New DataTable

a = dst.Tables("a")
b = dst.Tables("b")
Dim dv As DataView = New DataView
Dim c As DataTable = New DataTable
'在基于c字段的两个表之间建立父子关系
Dim Parent As DataColumn = dst.Tables("a").Columns("c")
Dim Child As DataColumn = dst.Tables("b").Columns("c")

Dim OrderRelation As DataRelation = New DataRelation("OrderRelation", Parent, Child, False)

'为DataSet添加关系
dst.Relations.Add(OrderRelation)
  • 打赏
  • 举报
回复
laughingrat 2003-12-12
学习
  • 打赏
  • 举报
回复
raike 2003-12-12
学习,关注Relations 方法
  • 打赏
  • 举报
回复
lanyahuhu 2003-12-12
up
  • 打赏
  • 举报
回复
guoyan19811021 2003-12-12
Dim conn As OleDb.OleDbConnection = New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\db.mdb")
Dim cmd As OleDb.OleDbDataAdapter = New OleDb.OleDbDataAdapter("select * from a", conn)
Dim dst As DataSet = New DataSet
cmd.Fill(dst, "a")
cmd = New OleDb.OleDbDataAdapter("select * from b", conn)
cmd.Fill(dst, "b")
Dim a As DataTable = New DataTable
Dim b As DataTable = New DataTable

a = dst.Tables("a")
b = dst.Tables("b")
Dim dv As DataView = New DataView
Dim c As DataTable = New DataTable
c = dst.Relations.Add("newtable", a.Columns("c"), b.Columns("c")).ParentTable()
DataGrid1.DataSource = c
DataGrid1.DataBind()
  • 打赏
  • 举报
回复
相关推荐
发帖
.NET社区
加入

6.0w+

社区成员

.NET技术交流专区
社区管理员
  • ASP.NET
  • R小R
  • 喵叔哟
帖子事件
创建了帖子
2003-12-12 03:38
社区公告

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

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