Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Замечание
Элемент управления DataGridView заменяет и добавляет функции в элемент управления DataGrid; однако элемент управления DataGrid сохраняется как для обратной совместимости, так и для дальнейшего использования, если вы выберете. Дополнительные сведения см. в разделе Различия между управляющими элементами DataGridView и DataGrid в Windows Forms.
Элемент управления Windows Forms DataGrid отображает данные в ряде строк и столбцов. Самый простой случай заключается в том, что сетка привязана к источнику данных с одной таблицей, которая не содержит связей. В этом случае данные отображаются в простых строках и столбцах, как в электронной таблице. Дополнительные сведения о привязке данных к другим элементам управления см. в Привязка данных иWindows Forms.
Если DataGrid привязан к данным с несколькими связанными таблицами и если навигация включена в сетке, сетка будет отображать расширители в каждой строке. С помощью расширителя пользователь может перейти из родительской таблицы в дочернюю таблицу. При нажатии на узел отображается дочерняя таблица, и при нажатии кнопки "Назад" отображается исходная родительская таблица. Таким образом, сетка отображает иерархические связи между таблицами.
На следующем снимку экрана показана привязка DataGrid к данным с несколькими таблицами:
DataGrid может предоставить пользовательский интерфейс для набора данных, навигации между связанными таблицами и расширенные возможности форматирования и редактирования.
Отображение и обработка данных являются отдельными функциями: элемент управления обрабатывает пользовательский интерфейс, а обновления данных обрабатываются архитектурой привязки данных Windows Forms и поставщиками данных .NET Framework. Поэтому несколько элементов управления, привязанных к одному источнику данных, будут оставаться в синхронизации.
Замечание
Если вы знакомы с элементом управления DataGrid в Visual Basic 6.0, вы найдете некоторые существенные различия в элементе управления Windows Forms DataGrid.
При привязке сетки к DataSetстолбцы и строки автоматически создаются, форматируются и заполняются. Дополнительные сведения см.: Привязка данных иWindows Forms. После создания элемента управления DataGrid можно добавлять, удалять, изменять порядок и форматировать столбцы и строки в зависимости от потребностей.
Привязка данных к элементу управления
Чтобы элемент управления DataGrid работал, он должен быть привязан к источнику данных с помощью свойств DataSource и DataMember во время разработки или метода SetDataBinding во время выполнения. Эта привязка привязывается DataGrid объекту источника данных, например, DataSet или DataTable). Элемент управления DataGrid показывает результаты действий, выполняемых на данных. Большинство действий, относящихся к данным, не выполняются через DataGrid, а вместо этого через источник данных.
Если данные в связанном наборе данных обновляются с помощью любого механизма, элемент управления DataGrid отражает изменения. Если сетка данных и ее стили таблиц и столбцов имеют свойство ReadOnly, установленное в false, данные в наборе данных можно обновить с помощью элемента управления DataGrid.
Одновременно можно отображать только одну таблицу в DataGrid. Если между таблицами определена родительско-дочерняя связь, пользователь может перемещаться между связанными таблицами, чтобы выбрать таблицу, отображаемую в контроле DataGrid. Сведения о привязке элемента управления DataGrid к источнику данных ADO.NET во время разработки или во время выполнения см. в статье Практическое руководство. Привязка элемента управления DataGrid Windows Forms к источнику данных.
Допустимые источники данных для DataGrid включают:
Класс DataTable
Класс DataView
Класс DataSet
Класс DataViewManager
Если источником является набор данных, набор данных может быть объектом в форме или объектом, переданным в форму веб-службой XML. Можно привязать к типизированным или нетипизированным наборам данных.
Вы также можете привязать элемент управления DataGrid к дополнительным структурам, если объекты в структуре, такие как элементы массива, предоставляют общедоступные свойства. Сетка отобразит все общедоступные свойства элементов в структуре. Например, если вы привязываете элемент управления DataGrid к массиву клиентских объектов, сетка отобразит все общедоступные свойства этих объектов клиента. В некоторых случаях это означает, что хотя вы можете привязаться к структуре, результирующая связанная структура может не иметь практического применения. Например, можно привязать к массиву целых чисел, но так как тип данных Integer не поддерживает общедоступное свойство, сетка не может отображать данные.
Можно привязать к следующим структурам, если их элементы предоставляют общедоступные свойства:
Любой компонент, реализующий интерфейс IList. Сюда входят массивы с одним измерением.
Любой компонент, реализующий интерфейс IListSource.
Любой компонент, реализующий интерфейс IBindingList.
Дополнительные сведения о возможных источниках данных см. в источниках данных, поддерживаемыхWindows Forms.
Отображение сетки
Обычное использование элемента управления DataGrid заключается в отображении одной таблицы данных из набора данных. Однако элемент управления также можно использовать для отображения нескольких таблиц, включая связанные таблицы. Отображение сетки настраивается автоматически в соответствии с источником данных. В следующей таблице показано, что отображается для различных конфигураций.
| Содержимое набора данных | Отображаемые сведения |
|---|---|
| Одна таблица. | Таблица отображается в сетке. |
| Несколько таблиц. | Сетка может отображать иерархическое представление, в котором пользователи могут перемещаться, чтобы найти таблицу, которую они хотят отобразить. |
| Несколько связанных таблиц. | Сетка может отображать представление дерева для выбора таблиц или указать, что сетка отображает родительскую таблицу. Записи в родительской таблице позволяют пользователям переходить к связанным дочерним строкам. |
Замечание
Таблицы в наборе данных связаны с помощью DataRelation. См. также создание связей между наборами данных.
Когда элемент управления DataGrid отображает таблицу и для свойства AllowSorting задано значение true, данные можно отсортировать заново, щелкнув по заголовкам столбцов. Пользователь также может добавлять строки и изменять ячейки.
Связи между набором таблиц отображаются пользователям с помощью родительской или дочерней структуры навигации. Родительские таблицы являются самым высоким уровнем данных, а дочерние таблицы — это таблицы данных, производные от отдельных перечислений в родительских таблицах. Расширители отображаются в каждой родительской строке, содержащей дочернюю таблицу. При щелчке средства расширения создается список веб-ссылок на дочерние таблицы. Когда пользователь выбирает ссылку, отображается дочерняя таблица. Щелчок по значку "Показать и скрыть родительские строки" (
) спрячет сведения о родительской таблице или покажет их снова, если пользователь ранее скрывал их. Пользователь может нажать кнопку "Назад", чтобы вернуться к ранее просматриваемой таблице.
Столбцы и строки
DataGrid состоит из коллекции объектов DataGridTableStyle, содержащихся в свойстве DataGrid элемента управления TableStyles. Стиль таблицы может содержать коллекцию объектов DataGridColumnStyle, которые находятся в свойстве GridColumnStyles объекта DataGridTableStyle. Свойства TableStyles и GridColumnStyles можно изменить с помощью редакторов коллекций, доступных через окно Свойства.
К любому DataGridTableStyle, связанному с элементом управления DataGrid, можно получить доступ через GridTableStylesCollection. GridTableStylesCollection можно изменить в конструкторе с помощью редактора коллекции DataGridTableStyle или программно с помощью свойства DataGrid элемента управления TableStyles.
На следующем рисунке показаны объекты, включенные в элемент управления DataGrid:
Стили таблиц и стили столбцов синхронизированы с объектами DataTable и DataColumn путем установки их свойств MappingName в соответствие с свойствами TableName и ColumnName. Если элемент управления DataGridTableStyle, привязанный к допустимому источнику данных, добавляется DataGrid, у которого отсутствуют стили колонок, и для свойства MappingName этого стиля таблицы задано допустимое свойство TableName, то для этого стиля таблицы создается коллекция объектов DataGridColumnStyle. Для каждого DataColumn, найденного в коллекции ColumnsDataTable, добавляется соответствующий DataGridColumnStyle в GridColumnStylesCollection. Доступ к GridColumnStylesCollection осуществляется через свойство GridColumnStylesDataGridTableStyle. Столбцы можно добавлять или удалять из сетки с помощью метода Add или Remove в GridColumnStylesCollection. Дополнительные сведения см. в статье Практическое руководство: Добавление таблиц и столбцов в элемент управления DataGrid Windows Forms и Практическое руководство: Удаление или скрытие столбцов в элементе управления DataGrid Windows Forms.
Коллекция типов столбцов расширяет класс DataGridColumnStyle с расширенными возможностями форматирования и редактирования. Все типы столбцов наследуются от базового класса DataGridColumnStyle. Созданный класс зависит от свойства DataType объекта DataColumn, на основе которого построен DataGridColumn. Например, DataColumn, у которого свойство DataType установлено на Boolean, будет связано с DataGridBoolColumn. В следующей таблице описаны все эти типы столбцов.
| Тип столбца | Описание |
|---|---|
| DataGridTextBoxColumn | Принимает и отображает данные как отформатированные или неформатированные строки. Возможности редактирования такие же, как при редактировании данных в простой TextBox. Наследует от DataGridColumnStyle. |
| DataGridBoolColumn | Принимает и отображает значения true, falseи NULL. Наследует от DataGridColumnStyle. |
Дважды щелкнув правый край столбца, измените размер столбца, чтобы отобразить полную подпись и наиболее широкую запись.
Стили таблиц и стили столбцов
Как только вы установили формат элемента управления DataGrid по умолчанию, можно настроить цвета, которые будут использоваться при отображении определенных таблиц в сетке данных.
Это достигается путем создания экземпляров класса DataGridTableStyle. Стили таблиц указывают форматирование определенных таблиц, отличных от форматирования по умолчанию самого элемента управления DataGrid. Каждая таблица может иметь только один стиль таблицы, определенный за раз.
Иногда требуется, чтобы определенный столбец отличался от остальных столбцов определенной таблицы данных. Настраиваемый набор стилей столбцов можно создать с помощью свойства GridColumnStyles.
Стили столбцов связаны со столбцами в наборе данных так же, как стили таблиц связаны с таблицами данных. Так же, как каждая таблица может иметь только один стиль таблицы, определенный для нее одновременно, поэтому каждый столбец может иметь только один стиль столбцов, определенный в определенном стиле таблицы. Эта связь определяется в свойстве MappingName столбца.
Если вы создали стиль таблицы без стилей столбцов, добавленных в него, Visual Studio добавит стили столбцов по умолчанию при создании формы и сетки во время выполнения. Однако если вы создали стиль таблицы и добавили в него стили столбцов, Visual Studio не будет создавать стили столбцов. Кроме того, вам нужно будет определить стили столбцов и присвоить им имя соответствия, чтобы на сетке отображались нужные вам столбцы.
Поскольку вы указываете, какие столбцы включены в сетку данных, назначая им стиль, и стиль не назначен столбцам, вы можете включать в набор данных столбцы, которые не отображаются в сетке. Тем не менее, так как столбец данных включен в набор данных, вы можете программно изменить данные, которые не отображаются.
Замечание
Как правило, создайте стили столбцов и добавьте их в коллекцию стилей столбцов перед добавлением стилей таблиц в коллекцию стилей таблиц. При добавлении в коллекцию пустого стиля таблицы, стили столбцов создаются автоматически. Следовательно, при попытке добавить новые стили столбцов с повторяющимися значениями MappingName в коллекцию стилей столбцов возникает исключение.
Иногда требуется только настроить один столбец среди многих столбцов; Например, набор данных содержит 50 столбцов и требуется только 49 из них. В этом случае проще импортировать все 50 столбцов и программно удалить один, а не программно добавлять каждый из 49 отдельных столбцов.
Форматирование
Форматирование, которое можно применить к элементу управления DataGrid, включает стили границ, стили сетки, шрифты, свойства подписи, выравнивание данных и чередование цветов фона между строками. Дополнительные сведения см. в статье How to: Format the Windows Forms DataGrid Control.
События
Помимо распространенных событий управления, таких как MouseDown, Enterи Scroll, элемент управления DataGrid поддерживает события, связанные с редактированием и навигацией в сетке. Свойство CurrentCell определяет, какая ячейка выбрана. Событие CurrentCellChanged возникает при переходе пользователя к новой ячейке. Когда пользователь переходит к новой таблице через отношения "родитель-ребенок", возникает событие Navigate. Событие BackButtonClick возникает, когда пользователь нажимает кнопку "Назад", когда пользователь просматривает дочернюю таблицу, и событие ShowParentDetailsButtonClick возникает при нажатии значка отображения или скрытия родительских строк.
См. также
- элемент управления DataGrid
- Практическое руководство. Привязка элемента управления DataGrid Windows Forms к источнику данных
- Как добавить таблицы и столбцы в элемент управления DataGrid Windows Forms
- Как удалить или скрыть столбцы в элементе управления DataGrid в Windows Forms
- Как форматировать элемент управления DataGrid в Windows Forms
.NET Desktop feedback