更新行后高效刷新 DataGridView

Refresh efficiently DataGridView after updating row

我有一个 DataGridView,它在 TableAdapterBindingSource 的帮助下从 SQL 服务器获取数据。

我有一种方法可以检测行的更改并将更新查询发送到 SQL 服务器。这非常有效。

之后,为了更新 DataGridView,我执行了以下操作:

this.TableAdapter.Fill(this.DataSet.DataTable);

问题是由于行数,这需要很长时间。

我需要刷新它,因为 table 适配器是一个将两个 table 与左连接合并的视图。

有没有办法只更新一行或其他更快的更新视图的方法?

在 Tableadapter 上进行另一个查询(右键单击它,添加查询),该查询采用要获取的数据参数。例如,如果您有一个现有查询:

SELECT * FROM a LEFT JOIN b ON a.id = b.id

(注意;在表适配器 a 中编写将整个数据库内容下载到客户端的查询通常是一个非常糟糕的主意)

您可以向表适配器添加另一个查询:

SELECT * FROM a LEFT JOIN b ON a.id = b.id WHERE a.id = @aid

并称之为FillByAId/GetDataByAId

然后在客户端你可以,更新一些行 ID 1234 后:

var newDt = yourTableAdapter.GetDataByAId(1234);

然后使用 datatable.Merge

将更改合并到您现有的数据表中