我有两个具有不同列名称的数据表,因为它们是由两个不同的MySQL表填充的
ID
,Name
,Brand
,Genre
和Creator
ID
,Name
,Brand
,Type
和EntryCreator
我想将两者合并,以便可以同时在DataGridView1
中显示它们。我做到了
DataTable2.Columns(3).ColumnName = "Genre"
DataTable2.Columns(4).ColumnName = "Creator"
然后
DataTable1.Merge(DataTable2, false, MissingSchemaAction.Add)
BindingSource1.DataSource = DataTable1
DataGridView1.Source = BindingSource1
但是在显示时,它仅显示来自DataTable2
的数据
答案 0 :(得分:1)
问题可能是由于Merge使用表的PrimaryKey查找要更新的现有记录,如果找不到它,则添加新记录。如果是这种情况,那么您应该禁用通过数据适配器填充表后检索到的PrimaryKey信息。
dataTable1.PrimaryKey = Nothing
dataTable2.PrimaryKey = Nothing
dataTable1.Merge(dataTable2, false, MissingSchemaAction.Add)
....
现在,合并无法找到匹配项,因此dataTabl2中的每个记录都被添加到dataTable1中。但是,我应该警告您注意此dataTable1上其他操作的性能和正确性。
现在没有PrimaryKey设置,这可能是更新和删除行时出现问题的根源(当然,如果您有这些操作)