Лучший способ заполнить DataGridView большим количеством данных

У меня есть форма окна, которая имеет два DataGridView (DGV), которые будут содержать более 25 000 записей и 21 столбец каждый. Я успешно загрузил каждый с данными из БД, используя DataAdapter, а затем я попытался просто заполнить DGV, используя для циклов. Каждый метод занимал примерно одинаковое количество времени. В первый раз, когда данные заполняются в DGV, это занимает слишком много времени (7+ минут), а затем последующие моменты времени становятся гораздо более разумными (~ 30 секунд). Поэтому мой вопрос: как лучше всего загрузить DGV большим объемом данных, который в среднем займет <= 1 мин? Мне действительно нравится функциональность DGV, но если дело доходит до толчка, я готов использовать другую технологию, даже если это означает отказ от некоторых из этих функций.

22
задан Imran Ali Khan 5 September 2016 в 11:28
поделиться

1 ответ

В основном существует 3 способа отображения данных в DataGridView

  • Создавайте строки вручную в цикле, как вы сейчас делаете: как вы заметили, это очень неэффективно, если у вас много данных

  • Используйте виртуальный режим DataGridView, как предложил Джонатан в своем комментарии: DGV создает столько строк, сколько может быть отображено, и динамически изменяет их содержимое, когда пользовательские прокрутки. Вам нужно обработать событие CellValueNeeded, чтобы передать необходимые данные в DGV

  • .Использовать привязку данных: это, безусловно, самый простой способ. Вы просто заполняете DataTable данными из базы данных с помощью DbDataAdapter и назначаете эту DataTable свойству DataSource DGV. DGV может автоматически создавать столбцы (AutoGenerateColumns = true), или вы можете создать их вручную (необходимо установить DataPropertyName столбца на имя поля, которое вы хотите отобразить. ). В режиме с привязкой к данным DGV работает так же, как и в виртуальном режиме, за исключением того, что он заботится о получении данных из источника данных, поэтому вам не нужно ничего делать. Это очень эффективно даже для большого количества строк

34
ответ дан 29 November 2019 в 04:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: