dataSet1的
col1 col2
---- ----
1一个
图2b
图3c
Dataset2
COL1
----
医生
工程师
程序员
我想在网格视图中这样做
col1 col2 col3
---- ---- ----
1医生
2 B工程师
3 C程序员
答案 0 :(得分:1)
在您的情况下,您无需合并2个DataTables
您可以使用linq代替。
var datasource = from r1 in table1.AsEnumerable().Select((r, i) => new { Value = r, Index = i })
from r2 in table2.AsEnumerable().Select((r, i) => new { Value = r, Index = i })
where r1.Index == r2.Index
select new
{
col1 = r1.Value["col1"].ToString(),
col2 = r1.Value["col2"].ToString(),
col3 = r2.Value["col1"].ToString(),
};
然后,绑定它。
datagridview.datasource = datasource ;
答案 1 :(得分:0)
如果您想要有两个相关的表,那么在相同的数据集中实现此目的的方法就是合适的。
这是linq方法的替代方案。
为此,您必须使用DataRelation http://msdn.microsoft.com/es-es/library/system.data.datarelation%28v=vs.110%29.aspx
当然,您必须创建一个ForeignKeyContraint才能使其正常工作。
以下是一个例子:
Dim relation As DataRelation
Dim ParentColumn As DataColumn
Dim ChildColumn As DataColumn
Dim foreignkey As ForeignKeyConstraint
ParentColumn = Me.dataset.Tables("table1").Columns(PKTable1)
ChildColumn = Me.dataset.Tables("table2").Columns(FKTable2)
foreignkey = New ForeignKeyConstraint("fkey_table1_table2", ParentColumn, ChildColumn)
foreignkey.DeleteRule = Rule.Cascade
foreignkey.UpdateRule = Rule.Cascade
foreignkey.AcceptRejectRule = AcceptRejectRule.Cascade
relation = New DataRelation("Relation_table1_table2", ParentColumn, ChildColumn, True)
table2.Constraints.Add(foreignkey)
Me.dataset.Relations.Add(relation)
现在您只需将 Table2 指定为 DataGrid
的数据源datagrid.datasource=dataset
datagrid.datamember= "table2"