C# 应用对复制的 DataTable 所做的更改
C# Apply changes made to copied DataTable
大家好!
我在尝试使用多个 DataTable 在多个 GridControl (DataGridView) 中显示和编辑数据时偶然发现了一个问题。
我有一个主数据表,用于存储有关用户的数据(只是一个示例)和一组另一个数据表,用于存储不同的数据(也与用户有关)。
我现在显示它们的方式如下:所有附加数据表都有一个“UserId”列,当在主 GridControl(用户)中单击该行时,使用 [=13= 复制其他 GridControl 的数据]
DataTable.Select(„UserId = …”)
方法,然后仅选定用户的数据显示在 GridControl 中。具有完整数据的 DataTable 存储在不同的变量中,每次单击 MainGrid 行时,完整数据用于为选定用户生成 DataTable。
显示数据工作正常,但在编辑那些额外的 GridControl 时,出现了一些问题。为了编辑它们,我使用 SqlDataAdapters 为每个额外的 tables 生成完整的数据表,当点击保存按钮时,它们只是更新数据库。
问题是我用
后
DataTable.Select(“UserId = …”)
如果我编辑新的 table,完整的 table 将不会受到影响。
另一方面,我不能只做
DataTable _NewTable = _OldTable
因为如果我尝试删除包含我不想显示的其他用户数据的行,它们将从完整的 DataTable 中完全删除。
由于我使用的是 DevExpress 控件,我可以将 GridControl 的数据源设置为完整 table 并在 GridControl 上应用过滤器,但这会使最终用户更难过滤数据。
您是否知道如何解决该问题,以便我可以编辑那些 "small" 数据表,然后以某种方式更新完整数据表中那些更改的行并能够使用 SqlDataAdapter?
感谢您的帮助,如果让您感到困惑,我们深表歉意!
我认为您不能复制子表的值并通过引用将其传递到父网格。了解差异 here。那么你会改变子网格,它也会改变父网格。
P.S。请post你所有的代码以获得更详细的答案
@Vlad 已解决我的问题,使用 DataView 作为带有行过滤器的附加网格控件的数据源。
大家好!
我在尝试使用多个 DataTable 在多个 GridControl (DataGridView) 中显示和编辑数据时偶然发现了一个问题。
我有一个主数据表,用于存储有关用户的数据(只是一个示例)和一组另一个数据表,用于存储不同的数据(也与用户有关)。
我现在显示它们的方式如下:所有附加数据表都有一个“UserId”列,当在主 GridControl(用户)中单击该行时,使用 [=13= 复制其他 GridControl 的数据]
DataTable.Select(„UserId = …”)
方法,然后仅选定用户的数据显示在 GridControl 中。具有完整数据的 DataTable 存储在不同的变量中,每次单击 MainGrid 行时,完整数据用于为选定用户生成 DataTable。
显示数据工作正常,但在编辑那些额外的 GridControl 时,出现了一些问题。为了编辑它们,我使用 SqlDataAdapters 为每个额外的 tables 生成完整的数据表,当点击保存按钮时,它们只是更新数据库。
问题是我用
后DataTable.Select(“UserId = …”)
如果我编辑新的 table,完整的 table 将不会受到影响。
另一方面,我不能只做
DataTable _NewTable = _OldTable
因为如果我尝试删除包含我不想显示的其他用户数据的行,它们将从完整的 DataTable 中完全删除。
由于我使用的是 DevExpress 控件,我可以将 GridControl 的数据源设置为完整 table 并在 GridControl 上应用过滤器,但这会使最终用户更难过滤数据。
您是否知道如何解决该问题,以便我可以编辑那些 "small" 数据表,然后以某种方式更新完整数据表中那些更改的行并能够使用 SqlDataAdapter?
感谢您的帮助,如果让您感到困惑,我们深表歉意!
我认为您不能复制子表的值并通过引用将其传递到父网格。了解差异 here。那么你会改变子网格,它也会改变父网格。
P.S。请post你所有的代码以获得更详细的答案
@Vlad 已解决我的问题,使用 DataView 作为带有行过滤器的附加网格控件的数据源。