如何异步更新数据表和网格?

发布于 2024-12-14 07:25:22 字数 139 浏览 2 评论 0原文

我使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

意犹 2024-12-21 07:25:22

我认为您可以使用以下方法:

  1. 使用BindingSource作为GridControl的数据源并禁用BindingSource.RaiseListChangedEvents选项。这将允许您阻止数据源向 GridControl 发送通知。因此,GridControl 不会在每次更改时自动更新自身。

  2. 更新数据源时,保存更新的行索引。

  3. 最后,引入一个定时器,间隔相等,例如5秒,并调用RefreshRow方法只刷新需要的行。此外,您还可以使用 RefreshDataSource 方法刷新所有行。

因此,您将每五秒仅更新一次所需的行,并且行状态将被保存。

I think that you can use the following approach:

  1. 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.

  2. On updating your datasource, save updated row indexes.

  3. 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文