Dataset1
col1 col2
1个月,一个月后
2个月-2个月
3个月-3个月
Dataset2
col1
医生
工程师
程序员
我想要像这样的网格视图。
col1 col2 col3
1%的人是一名健康的医生。
2个月,2个月,2个月。
3个月后,他将成为一个程序员。
发布于 2012-01-04 15:43:55
在您的示例中,您不需要合并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 ;发布于 2014-12-31 18:51:38
如果您希望有两个相关的表,在相同的Dataset中实现这一点是合适的方法。
这是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的DataSource
datagrid.datasource=dataset
datagrid.datamember= "table2"https://stackoverflow.com/questions/8723360
复制相似问题