我有两个独立的数据表,一个是整数类型,一个是字符串类型。两个表的大小均为3x3,并且我想将这两个表简单合并并在datagridview中显示,以便我可以显示一个3x6的datagridview。
以下是示例图片:
我希望将这两个表组合起来,得到下面的图片所示的结果:
以下是示例图片:
![Two separate datatables](https://istack.dev59.com/60swL.webp)
![Datatables joined](https://istack.dev59.com/0wBTF.webp)
Dim stringtable As New DataTable
stringtable.Columns.Add("PK", GetType(Integer))
stringtable.Columns.Add("Col1", GetType(Integer))
stringtable.Columns.Add("Col2", GetType(Integer))
stringtable.Columns.Add("Col3", GetType(Integer))
stringtable.Rows.Add(1, 1, 1, 1)
stringtable.Rows.Add(2, 2, 2, 2)
stringtable.Rows.Add(3, 3, 3, 3)
Dim primaryKey(1) As DataColumn
primaryKey(0) = stringtable.Columns("Name")
stringtable.PrimaryKey = primaryKey
Dim Inttable As New DataTable
Inttable.Columns.Add("PK", GetType(Integer))
Inttable.Columns.Add("ColA", GetType(String))
Inttable.Columns.Add("ColB", GetType(String))
Inttable.Columns.Add("ColC", GetType(String))
Inttable.Rows.Add(1, "A", "A", "A")
Inttable.Rows.Add(2, "B", "B", "B")
Inttable.Rows.Add(3, "C", "C", "C")
primaryKey(0) = Inttable.Columns("Name")
Inttable.PrimaryKey = primaryKey
DataGridView2.DataSource = stringtable
DataGridView2.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill
DataGridView2.AllowUserToAddRows = False
DataGridView1.DataSource = Inttable
DataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill
DataGridView1.AllowUserToAddRows = False
''This is where I can't figure out what do
Dim mergedTable As New DataTable
mergedTable = DataGridView2.DataSource
mergedTable.Merge(Inttable, False, MissingSchemaAction.Add)
DataGridView3.DataSource = mergedTable
我尝试过几种方法,但似乎无法做到正确的结果。有时它会用12个空单元格填充6x6 datagridview,而其他时候它会保留一个datatable的值,但将第二个datatable的所有值替换为空白。
编辑 我已经编辑了我的代码,以反映在datatables中添加主键,但是现在对于某些表格,它仍然会用空单元格填充。有人能告诉我为什么datatables不仅仅在主键上合并而不留下空行吗?