首页 > 解决方案 > 更新行后有效刷新DataGridView

问题描述

我有一个 DataGridView,它借助 aTableAdapter和 a从 SQL Server 获取数据BindingSource

我有一种方法可以检测对行的更改并将更新查询发送到 SQL Server。这完美地工作。

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

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

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

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

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

标签: c#datagridviewbindingsourcetableadapter

解决方案


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

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

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

您可以向 tableadapter 添加另一个查询:

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将更改合并到您现有的数据表中


推荐阅读