c# - 更新行后有效刷新DataGridView
问题描述
我有一个 DataGridView,它借助 aTableAdapter
和 a从 SQL Server 获取数据BindingSource
。
我有一种方法可以检测对行的更改并将更新查询发送到 SQL Server。这完美地工作。
之后,要更新 DataGridView,我执行以下操作:
this.TableAdapter.Fill(this.DataSet.DataTable);
问题是由于行数,这需要很长时间。
我需要刷新它,因为表适配器是一个将两个表与左连接合并的视图。
有没有办法只更新一行或其他更快的方法来更新视图?
解决方案
在 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将更改合并到您现有的数据表中
推荐阅读
- typescript - 为什么在实现接口时需要显式键入我的方法参数?
- ssl - 最新开放的 SSL 不使用 tls?
- php - CodeIgniter 无法在 VPS 上发送电子邮件
- directshow - 任何区分虚拟和物理相机的方法
- javascript - 如何在 AMP 中多次渲染相同的元素?
- mongodb - UserNotFound:找不到用户 admin@automation
- python - 在 Python 中按值绘制直方图排序
- java - JavaFX listview 使用线程在自定义单元格中加载错误的图像
- matlab - 如何使用 UNIX 命令将文件夹插入 MATLAB 中的 .tar 文件?
- ios - 如何从 Mac 终端检查应用程序是否在 iOS 设备中运行