0

我有一个DataGridView显示来自SQL table. 它正在使用sqldependency以便在数据更改时发出警报,并DataGridView立即显示更新的数据。新行将定期添加到此表中,当发生这种情况时,我只想从第一个数据网格中获取那些新行并填充单独的DataGridView.

我已经RowAdded eventsqldependency.

有没有人有做类似事情的经验?

4

1 回答 1

1

让我们调用具有所有行Grid A的第一个 DataGridView和仅显示新行Grid B的 DataGridView 。不要通过观察网格 A 的变化来定义网格 B 的内容。相反,创建自己的“新行”定义。一种简单的方法是在每次更新期间复制网格 A 的内容(在我们的 SqlDependency 对象的 OnChange 事件中)。然后,在下一次更新时,您将能够将行选择到“新行”数据集中。

这是您的 SqlDependency 对象的 OnChange 处理程序的伪代码(这应该监视填充网格 A 的 SqlCommand):

  1. 运行一个 SqlCommand,从 Grid A 数据源中选择行,该数据源带有一个 NOT IN 子句,该子句在名为LastUpdate的第二个表中排除具有 ID 的行(参见步骤 2)。这将是网格 B 的数据源
  2. 运行将 Grid A 数据源的所有行复制到 LastUpdate 表的 SqlCommand。最简单的方法可能是先删除 LastUpdate 的内容,然后运行以下形式的语句:INSERT INTO LastUpdate(ID) SELECT ID FROM table_x
  3. 正常更新网格 A

我要强调的一点是,这种更新策略在数据查询和 UI 之间创建了有效的分离。换句话说,驱动网格 B 的数据不依赖于网格 A。如果你坚持这个原则,你应该会得到一个更易于维护的应用程序。

于 2013-02-25T06:14:34.757 回答