我有一个显示DataGridView
数据的SQL table
。它正在使用sqldependency
,以便在数据更改时发出警报,DataGridView
会立即显示更新的数据。新行将定期添加到此表中,当发生这种情况时,我只想从第一个数据网格中获取那些新行并填充单独的DataGridView
。
我已经使用RowAdded event
进行了一些实验,但它并不完全是直截了当的,因为每当网格视图由sqldependency
更新时,它都会为表中的每一行创建一个警报。
有没有人有经验做类似的事情?
答案 0 :(得分:1)
让我们调用第一个DataGridView,其中所有行 Grid A 和DataGridView只显示新行 Grid B 。不要通过观察对网格A的更改来定义网格B的内容。而是创建自己对“新行”的定义。一种简单的方法是在每次更新期间(在我们的SqlDependency对象的OnChange事件中)复制网格A的内容。然后,在下一次更新时,您将能够在“新行”数据集中选择行。
这是SqlDependency对象的OnChange处理程序的伪代码(这应该是观察填充网格A的SqlCommand):
INSERT INTO LastUpdate(ID) SELECT ID FROM table_x
我想强调的是,此更新策略可以在数据查询和UI之间创建有效的分离。换句话说,驱动网格B的数据绝不依赖于网格A.如果你坚持这个原则,你最终应该有一个更易于维护的应用程序。