Как я могу обновить таблицу данных и сетку асинхронно? - PullRequest
1 голос
/ 08 ноября 2011

Я использую компонент DevExpress XtraGrid и DataTable в качестве источника данных.

Я хотел бы обновлять данные (асинхронно) каждые несколько секунд, но не хочу прокручивать / свернуть /изменить сетку.

Например, если пользователь прокрутил сетку, а я выполняю фоновое обновление, я хочу, чтобы пользователь остался в той же строке и т. д.

1 Ответ

1 голос
/ 09 ноября 2011

Я думаю, что вы можете использовать следующий подход:

  1. Используйте BindingSource в качестве источника данных для GridControl и отключите параметр BindingSource.RaiseListChangedEvents. Это позволит вам запретить отправке вашего источника данных уведомлений в GridControl. В результате GridControl не будет обновляться автоматически при каждом изменении.

  2. При обновлении источника данных сохраняйте обновленные индексы строк.

  3. Наконец, введите таймер с интервалом, равным, например, пяти секундам, и вызовите метод RefreshRow, чтобы обновить только требуемые строки. Также вы можете обновить все строки, используя метод RefreshDataSource.

В результате вы будете обновлять только необходимые строки один раз в пять секунд, и состояния строк будут сохраняться.

...