Режимы отображения данных в элементе управления DataGridView в Windows Forms

Элемент управления DataGridView может отображать данные в трех разных режимах: с привязкой, без привязки и в виртуальном режиме. Выбирайте наиболее подходящий режим в соответствии с вашими требованиями.

Без привязки

Режим без привязки подходит для отображения относительно небольших объемов данных, которые управляются программными средствами. В отличие от режима с привязкой, элемент управления DataGridView не подключается непосредственно к источнику данных. Вместо этого вы заполняете элемент управления самостоятельно, как правило, с помощью метода DataGridViewRowCollection.Add.

Режим без привязки может быть особенно полезен при работе со статическими, доступными только для чтения данными, а также для предоставления собственного кода, взаимодействующего с внешним хранилищем данных. Если требуется обеспечить взаимодействие пользователей с внешним источником данных, обычно используется режим привязки.

Пример, в котором используется доступный только для чтения элемент управления DataGridView без привязки, приводится в статье Практическое руководство. Создание не связанного с данными элемента управления DataGridView в Windows Forms.

Bound

Режим с привязкой подходит для управления данными посредством автоматического взаимодействия с хранилищем данных. Элемент управления DataGridView можно подключить непосредственно к источнику данных, задав свойство DataSource. Если элемент управления привязан к данным, строки данных отправляются и извлекаются без явного управления с вашей стороны. Если свойство AutoGenerateColumns имеет значение true, для каждого столбца в источнике данных создается соответствующий столбец в элементе управления. Если вы предпочитаете создавать собственные столбцы, присвойте этому свойству значение false и используйте свойство DataPropertyName для привязки каждого столбца при его настройке. Такой подход эффективен, если требуется использовать тип столбца, отличный от создаваемых по умолчанию. Дополнительные сведения см. в статье Типы столбцов элемента управления DataGridView в Windows Forms.

Пример, в котором используется элемент управления DataGridView с привязкой, см. в статье Пошаговое руководство. Проверка данных элемента управления DataGridView в Windows Forms.

В режиме с привязкой в элемент управления DataGridView также можно добавлять непривязанные столбцы. Такой подход применяется при отображении столбца с кнопками или ссылками, позволяющими пользователям выполнять действия с определенными строками. Кроме того, он может использоваться для отображения столбцов со значениями, которые вычисляются на основе привязанных столбцов. Значения ячеек для вычисляемых столбцов можно заполнить в обработчике события CellFormatting. Тем не менее, если в качестве источника данных используется элемент DataSet или DataTable, вместо это для создания вычисляемого столбца может потребоваться использовать свойство DataColumn.Expression. В этом случае элемент управления DataGridView будет обрабатывать вычисляемый столбец так же, как и любой другой столбец в источнике данных.

Сортировка по непривязанным столбцам в режиме привязки не поддерживается. При создании в режиме привязки непривязанного столбца, содержащего редактируемые пользователем значения, необходимо реализовать виртуальный режим для сохранения этих значений при сортировке элемента управления по привязанным столбцам.

Виртуальная

В виртуальном режиме вы можете реализовать собственные операции управления данными. Это требуется для сохранения значений непривязанных столбцов в режиме привязки при сортировке элемента управления по привязанным столбцам. Тем не менее, основное предназначение виртуального режима заключается в оптимизации производительности при взаимодействии с большими объемами данных.

Элемент управления DataGridView подключается к управляемому вами кэшу, а управление операциями отправки и извлечения строк данных осуществляется в коде. Чтобы снизить объем занимаемой памяти, размер кэша должен примерно соответствовать количеству отображаемых в данный момент строк. Когда пользователь прокручивает в представлении новые строки, код запрашивает новые данные из кэша и при необходимости удаляет старые данные из памяти.

При реализации виртуального режима необходимо отслеживать моменты, когда в модели данных требуется новая строка, и когда нужно откатить добавление новой строки. Точная реализация этой функции зависит от реализации модели данных и ее семантики транзакций, например, от того, находится ли область фиксации на уровне ячейки или строки.

Дополнительные сведения о виртуальном режиме см. в статье Виртуальный режим для элемента управления DataGridView в Windows Forms. Пример, в котором демонстрируется использование событий виртуального режима, см. в статье Пошаговое руководство. Реализация виртуального режима для элемента управления DataGridView в Windows Forms.

См. также