Общие сведения об элементе управления DataGrid (Windows Forms)
Обновлен: Ноябрь 2007
Примечание. |
---|
Элемент управления DataGridView заменяет элемент управления DataGrid и расширяет его функциональные возможности; однако при необходимости элемент управления DataGrid можно сохранить для обратной совместимости и использования в будущем. Дополнительные сведения см. в разделе Различия элементов управления DataGridView и DataGrid в Windows Forms. |
Элемент управления Windows Forms DataGrid позволяет отобразить данные в виде набора строк и столбцов. В простейшем случае сетка привязана к источнику данных с помощью единственной таблицы, не содержащей связей. В этом случае данные отображаются в простых сроках и столбцах, как в электронной таблице. Дополнительные сведения о привязке данных к другим элементами управления см. в разделе Связывание данных и Windows Forms.
Если элемент управления DataGrid привязан к данным с помощью нескольких связанных таблиц и в сетке разрешены переходы, в каждом ряду сетки отображаются расширители. Расширитель позволяет переходить из родительской таблицы в дочернюю. При щелчке по узлу отображается дочерняя таблица, а при нажатии кнопки возврата — исходная родительская таблица. Таким образом в сетке отображаются иерархические связи между таблицами.
На следующем снимке экрана показан элемент управления DataGrid, привязанный к данным с помощью нескольких таблиц.
Элемент управления DataGrid, привязанный к данным с помощью нескольких таблиц
Элемент управления DataGrid предоставляет доступ к пользовательскому интерфейсу для набора данных, средствам перемещения между связанными таблицами, а также разнообразным возможностям форматирования и редактирования.
Отображение данных и работа с ними являются отдельными функциями. Элемент управления предоставляет пользователю интерфейс, а обновление данных выполняется архитектурой привязки данных Windows Forms и поставщиками данных .NET Framework. Таким образом, несколько элементов управления, привязанные к одному источнику данных, будут всегда синхронизированы.
Примечание Visual Basic. |
---|
Примечание для Visual Basic. Элемент управления Windows Forms DataGrid имеет ряд существенных отличий от элемента управления DataGrid в Visual Basic 6.0. Дополнительные сведения см. в разделах Создание приложений для обработки данных с помощью Visual Studio и Элемент управления DataGrid (для пользователей Visual Basic 6.0). |
После привязки сетки к объекту 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, которые содержатся в свойстве TableStyles элемента управления DataGrid. Стиль таблицы может содержать коллекцию объектов DataGridColumnStyle, перечисленных в свойстве GridColumnStyles объекта DataGridTableStyle. Значения свойств TableStyles и GridColumnStyles можно изменять с помощью коллекции редакторов, доступных в окне Свойства.
Доступ к любому объекту DataGridTableStyle, связанному с элементом управления DataGrid, можно получить с помощью объекта GridTableStylesCollection. Объект GridTableStylesCollection можно редактировать в конструкторе с помощью редактора коллекции DataGridTableStyle или программно с помощью свойства TableStyles элемента управления DataGrid.
На следующем рисунке показаны объекты, включенные в элемент управления DataGrid
Стили таблиц и столбцов синхронизируются с помощью объектов DataTable и DataColumn путем настройки их свойств MappingName в соответствии со значениями свойств TableName и ColumnName. Если объект DataGridTableStyle без стилей столбцов добавляется в элемент управления DataGrid, связанный с допустимым источником данных, и в свойстве MappingName стиля задано допустимое значение свойства TableName, для данного стиля таблицы создается коллекция объектов DataGridColumnStyle. Для каждого объекта DataColumn из коллекции Columns объекта DataTable соответствующий объект DataGridColumnStyle добавляется в объект GridColumnStylesCollection. Доступ к объекту GridColumnStylesCollection можно получить с помощью свойства GridColumnStyles объекта DataGridTableStyle. Столбцы можно добавлять в сетку и удалять из нее, применяя методы Add и Remove к объекту GridColumnStylesCollection. Дополнительные сведения см. в разделах Практическое руководство. Добавление таблиц и столбцов в элемент управления DataGrid в Windows Forms и Практическое руководство. Удаление или сокрытие столбцов элемента управления DataGridView в Windows Forms.
Коллекция типов столбцов является расширением класса DataGridColumnStyle с разнообразными возможностями форматирования и редактирования. Все типы столбцов наследуют от базового класса DataGridColumnStyle. Тип создаваемого класса зависит от значения свойства DataType объекта DataColumn, на котором основан DataGridColumn. Например, DataColumn со значением свойства DataType равным Boolean, будет связан с объектом DataGridBoolColumn. В следующей таблице содержится описание этих типов столбцов.
Тип столбца |
Описание |
---|---|
Принимает и отображает данные в виде форматированных или неформатированных строк. Возможности редактирования аналогичны возможностям редактирования данных в простом элементе управления TextBox. Наследуется от DataGridColumnStyle. |
|
Принимает и отображает значения true, false и пустые значения. Наследуется от DataGridColumnStyle. |
Двойной щелчок по правой границе столбца позволяет изменить размеры строки для отображения полного заголовка и записи, имеющей наибольшую ширину.
Стили таблиц и столбцов
После выбора формата элемента управления DataGrid, используемого по умолчанию, можно настроить цвета представления определенных таблиц в сетке данных.
Это достигается путем создания экземпляров класса DataGridTableStyle. Стили таблиц определяют форматирование отдельных таблиц, отличное от стандартного форматирования элемента управления DataGrid. Одновременно для любой таблицы можно задать только один стиль.
Иногда требуется, чтобы представление определенного столбца отличалось от представления остальных столбцов этой таблицы данных. Свойство GridColumnStyles позволяет создавать пользовательский набор стилей столбца.
Стили столбцов связаны со столбцами в наборе данных так же, как стили таблиц связаны с таблицами данных. Так же, как для каждой таблицы одновременно можно определить только один стиль таблицы, для каждого столбца может быть определен только один стиль столбца в данном стиле таблицы. Эта зависимость определяется с помощью свойства MappingName столбца.
Если в созданном стиле таблицы отсутствуют стили столбцов, то они добавляются автоматически в Visual Studio при создании формы и сетки во время выполнения. Однако если в созданный стиль таблицы добавлены какие-либо стили столбцов, то эти стили в Visual Studio уже не создаются. Кроме того, для отображения требуемых столбцов в сетке необходимо определить стили столбцов и назначить их с помощью имени сопоставления.
Так как столбцы, отображаемые в сетке данных, необходимо указать путем назначения им стиля столбца, в набор данных можно включать столбцы, которые не будут представлены в сетке, поскольку им не назначены стили. Однако поскольку столбцы включены в набор данных, неотображаемые данные можно редактировать программными средствами.
Примечание. |
---|
Следует взять за правило создавать стили столбцов и добавлять их в коллекцию стилей столбцов перед добавлением стилей таблиц в коллекцию стилей таблиц. При добавлении в коллекцию пустого стиля таблицы стили столбцов создаются автоматически. Из этого следует, что при попытке добавления в коллекцию новых стилей столбцов с уже существующими в ней значениями MappingName возникнет исключение. Иногда требуется убрать один столбец из многих. Например, набор данных содержит 50 столбцов и нужны только 49 из них. В этом случае проще импортировать все 50 столбцов и удалить программными средствами один из них, чем программно добавлять все 49 требуемых столбцов по отдельности. |
Форматирование
В элементе управления DataGrid можно настроить стили границ, стили сетки, шрифты, свойства заголовка, выравнивание данных и чередующиеся фоновые цвета для строк. Дополнительные сведения см. в разделе Практическое руководство. Форматирование элемента управления DataGrid в Windows Forms.
События
Помимо общих событий элементов управления, таких как MouseDown, Enter и Scroll, элемент управления DataGrid поддерживает события, связанные с редактированием и перемещениями по сетке. Свойство CurrentCell определяет выбранную ячейку. Когда пользователь переходит к новой ячейке, возникает событие CurrentCellChanged. При переходе пользователя к новой таблице с помощью связей "родители-потомки" возникает событие Navigate. Событие BackButtonClick возникает, когда пользователь нажимает кнопку возврата при просмотре дочерней таблицы, а ShowParentDetailsButtonClick — при щелчке значка отображения и скрытия родительских строк.
См. также
Задачи
Практическое руководство. Привязка элемента управления DataGrid в Windows Forms к источнику данных
Практическое руководство. Добавление таблиц и столбцов в элемент управления DataGrid в Windows Forms
Практическое руководство. Форматирование элемента управления DataGrid в Windows Forms