如何异步更新数据表和网格?
我使用 DevExpress XtraGrid 组件和 DataTable 作为数据源。
我想每隔几秒(异步)更新一次数据,但我不想滚动/折叠/更改网格。
例如,如果用户滚动了网格并且我执行了后台更新,那么我希望用户保持在同一行等。
I'm using a DevExpress XtraGrid component and a DataTable as the data source.
I'd like to update the data (asynchronously) every few seconds but I don't want to scroll/collapse/change the grid.
For example, if a user has scrolled the grid and I perform a background update, then I want the user to stay on the same row, etc.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我认为您可以使用以下方法:
使用BindingSource作为GridControl的数据源并禁用BindingSource.RaiseListChangedEvents选项。这将允许您阻止数据源向 GridControl 发送通知。因此,GridControl 不会在每次更改时自动更新自身。
更新数据源时,保存更新的行索引。
最后,引入一个定时器,间隔相等,例如5秒,并调用RefreshRow方法只刷新需要的行。此外,您还可以使用 RefreshDataSource 方法刷新所有行。
因此,您将每五秒仅更新一次所需的行,并且行状态将被保存。
I think that you can use the following approach:
Use BindingSource as a datasource for GridControl and disable BindingSource.RaiseListChangedEvents option. This will allow you to prevent your datasource from sending notifications to GridControl. As a result, GridControl will not update itself automatically on each change.
On updating your datasource, save updated row indexes.
Finally, introduce a timer with interval equal, for example, five seconds, and call the RefreshRow method to refresh only requiered rows. Also, you can refresh all rows using the RefreshDataSource method.
As a result, you will update only required rows once in five seconds and row states will be saved.