Как плавно обновить GridView, обновив связанный DataTable в C #? - PullRequest
0 голосов
/ 10 марта 2009

У меня есть GridView, у которого DataSource установлено на DataTable. DataTable обновляется некоторой серверной логикой каждые несколько секунд, после чего делегат вызывается для обновления GridView.

В настоящее время я просто сбрасываю DataSource, но это вызывает проблему - оно прерывает все текущие изменения в виде сетки и делает выбор «перепрыгнуть» в верхнюю левую ячейку.

Логика обновления в основном создает новую (идентичную по столбцам и строкам) DataTable.

Есть ли стандартный способ сделать это без каких-либо недостатков? Мой единственный вариант - обновлять текущую строку DataSource строка за строкой, вставляя значения программно?

Спасибо!

Ответы [ 3 ]

1 голос
/ 11 марта 2009

Меня смущает многое в этом вопросе. Если вы используете GridView, а не DataGridView, то вы используете ASP.NET, WPF или .NET 1.1. Что это?

Далее: вы создаете новый DataTable полностью? Ну, конечно, элемент управления будет сброшен при сбросе DataSource. Он не знает, что схема вашего нового DataTable такая же, как и схема, которую он заменяет. Нужно пройти через колонны и восстановить привязки.

Кроме того, из курс теряет текущий ряд. Текущая строка принадлежит старому DataTable, а не новому.

Если вы хотите, чтобы связанный элемент управления сохранял свое состояние при обновлении базового источника данных, обновите базовый источник данных, не заменяйте его новым.

1 голос
/ 10 марта 2009

Вы должны использовать BindingList или другой источник данных, который поддерживает уведомление об изменении.

0 голосов
/ 11 марта 2009

Ваши обновления происходят в фоновом потоке? Я не знаю, будет ли это работать в вашем сценарии, но вы можете попробовать этот список переплетенных потоков ; см. пример, чтобы увидеть, как работник весело редактирует сетку.

...