C#应用对复制的DataTable所做的更改

时间:2016-08-25 09:39:19

标签: c# datagridview datatable copy gridcontrol

大家好!

我在尝试使用多个DataTables在多个GridControls(DataGridViews)中显示和编辑数据时偶然发现了一个问题。

我有一个主DataTable存储有关用户的数据(仅作为示例)和一组存储不同数据的其他DataTable(也包括用户)。

我现在显示它们的方式如下:所有其他DataTable都有一个“UserId”列,当在主GridControl(用户)中单击该行时,其他GridControls的数据将使用

复制
DataTable.Select(„UserId = …”) 

方法然后只在GridControl中显示所选用户的数据。具有完整数据的DataTable存储在不同的变量中,每次单击MainGrid行时,完整数据将用于为所选用户生成DataTable。

显示数据工作正常,但在编辑其他GridControl时,存在一些问题。为了编辑它们,我使用SqlDataAdapters为每个附加表生成完整的DataTable,当单击保存按钮时,它们只是更新数据库。

问题在于我使用

之后
DataTable.Select(“UserId = …”)

如果我编辑新表格,那么整张表格不会受到影响。

另一方面,我不能只做

DataTable _NewTable = _OldTable 

因为如果我尝试删除包含我不想显示的其他用户数据的行,那么它们将完全从完整的DataTable中删除。

当我使用DevExpress控件时,我可以将GridControl的DataSource设置为完整表并在GridControl上应用过滤器,但它会使最终用户的过滤数据更加困难。

你对如何解决这个问题有一个想法,所以我可以编辑那些" small" DataTables,然后以某种方式更新完整DataTable中的那些已更改的行,并能够使用SqlDataAdapter?

感谢您的帮助,对不起,如果我困惑了您!

2 个答案:

答案 0 :(得分:0)

我认为你不能复制子表的值并通过引用将它传递给父网格。阅读差异here。那么你将改变子网格,它也将改变父网格。

P.S。请发布所有代码以获取更详细的答案

答案 1 :(得分:0)

我的问题已由@Vlad解决,使用DataView作为带有行过滤器的其他网格控件的数据源。