大家好!
我在尝试使用多个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?
感谢您的帮助,对不起,如果我困惑了您!
答案 0 :(得分:0)
我认为你不能复制子表的值并通过引用将它传递给父网格。阅读差异here。那么你将改变子网格,它也将改变父网格。
P.S。请发布所有代码以获取更详细的答案
答案 1 :(得分:0)
我的问题已由@Vlad解决,使用DataView作为带有行过滤器的其他网格控件的数据源。