DataGridView
Элемент управления DataGridView предоставляет настраиваемую таблицу для отображения данных.
В своей простейшей форме DataGridView имеет базисные компоненты, представленные на рис.
Рис. Базовые компоненты DataGridView
Помимо базисных элементов и базисного внешнего вида у этого control-а есть базовое поведение:
- Автоматически показывать заголовки колонок и заголовки строк. И те, и другие остаются видимыми при любом скроллинге.
- Ставить на одном из заголовков строк маркер (черный треугольничек) текущей строки.
- Выбирать целую строку, если пользователь щелкнет по заголовку строки.
- Выбирать сразу несколько строк, если щелчок по заголовку строки производится с зажатым Ctrl или Shift. При этом текущая строка (помеченная треугольничком) всегда будет единственной.
- Удалять все выбранные строки по нажатию на Delete.
- Отображать ячейку, имеющую фокус ввода, особым образом.
- Если пользователь выполнит двойной щелчок по разделителю колонок, будет произведена автоподборка ширины левой колонки.
- Если в методе Main приложения был вызван метод EnableVisualStyles, будет применяться стиль Windows XP, выбранный в настройках рабочего стола.
Помимо этого элемент управления поддерживает следующее редактирование содержимого:
- Если пользователь выполнит двойной щелчок по ячейке (или нажмет на ней F2), данная ячейка будет переведена в режим редактирования.
- Если пользователь изменит хотя бы один символ в редактируемой ячейке, на заголовке соответствующей строки появится спецсимвол (пишущий карандашик), и будет отображаться до тех пор, пока фокус ввода не покинет редактируемую ячейку, или пока пользователь не нажмет Esc. Последнее действие восстановит то значение ячейки, которое она содержала до входа в режим редактирования.
- Если пользователь прокрутит control вниз до последней строчки, будет отображена дополнительная, специальная строчка для внесения новой записи. Такая строчка всегда помечена символом звездочки на заголовке. Когда пользователь любым способом перемещается в эту строку, DataGridView добавляет новую запись со значениями по умолчанию. Если фокус ввода находится в этой строке, и пользователь нажимает Esc, новая запись пропадает, а фокус ввода перемещается на строчку выше.
Таблица – Свойства DataGridView
Свойство | Значение |
Доступ к элементам таблицы | |
Rows, Columns | Получает коллекцию, содержащую все строки (столбцы) в элементе управления DataGridView. В данном случае не указывается источник данных, можно создать столбцы и строки, содержащие данные, и добавить их непосредственно в объект DataGridView |
Item[Int32, Int32] | Предоставляет индексатор для получения или задания ячейки, расположенной на пересечении указанных строки и столбца. |
Item[String, Int32] | Предоставляет индексатор для получения или задания ячейки, расположенной на пересечении строки с указанным индексом и строки с указанным именем. |
RowCount, ColumnCount | Возвращает или задает число строк (столбцов), отображаемых в объекте DataGridView |
CurrentCell | Возвращает или задает ячейку, которая является активной в данный момент. |
CurrentCellAddress | Получает индексы строки и столбца ячейки, которая является активной в данный момент. |
CurrentRow | Получает строку, содержащую текущую ячейку. |
SelectedCells | Получает коллекцию ячеек, выбранных пользователем. |
SelectedRows, SelectedColumns | Получает коллекцию строк (столбцов), выбранных пользователем. |
Привязка к источнику данных | |
DataSource | Возвращает или задает источник данных, для которого объект DataGridView отображает данные. |
DataMember | Возвращает или задает имя списка или таблицы в источнике данных, для которого объект DataGridView является отображением данных. |
Настройка вида элемента | |
DefaultCellStyle | Возвращает или задает стиль ячейки по умолчанию, который будет применяться к ячейкам в объекте DataGridView, если не заданы какие-либо другие свойства стиля ячейки. |
CellBorderStyle | Получает стиль границы ячейки для объекта DataGridView. |
GridColor | Возвращает или задает цвет линий сетки, разделяющих ячейки объекта DataGridView. |
ForeColor | Возвращает или задает основной цвет для объекта DataGridView. |
RowHeadersDefaultCellStyle, ColumnHeadersDefaultCellStyle | Возвращает или задает стиль заголовка строки (столбца) по умолчанию. |
RowHeadersWidth, ColumnHeadersHeight | Возвращает или задает высоту (в пикселях) строки заголовков столбцов |
RowHeadersBorderStyle, ColumnHeadersBorderStyle | Возвращает или задает стиль границы ячеек заголовков строк. |
RowHeadersVisible, ColumnHeadersVisible | Возвращает или задает значение, указывающее, отображается ли столбец, содержащий заголовки строк. |
FirstDisplayedCell | Возвращает или задает первую ячейку, отображаемую в данный момент в объекте DataGridView; обычно эта ячейка находится в левом верхнем углу. |
Свойства, определяющие поведение пользователя | |
AllowUserToAddRows | Возвращает или задает значение, указывающее, отображается ли для пользователя параметр добавления строк. |
AllowUserToDeleteRows | Возвращает или задает значение, указывающее, разрешено ли пользователю удалять строки из объекта DataGridView. |
AllowUserToOrderColumns | Возвращает или задает значение, указывающее, включена ли возможность изменения положения столбца вручную. |
AllowUserToResizeColumns | Возвращает или задает значение, указывающее, может ли пользователь изменять размер столбцов. |
AllowUserToResizeRows | Возвращает или задает значение, указывающее, может ли пользователь изменять размер строк. |
MultiSelect | Возвращает или задает значение, указывающее, разрешено ли пользователю выбирать одновременно более одной ячейки, строки или столбца объекта DataGridView. |
Если DataGridView привязан через свойство DataSource к источнику данных, то по умолчанию выполняется следующее.
- Каждая колонка, получаемая из источника данных, вызовет добавление соответствующей колонки в элемент управления.
- Названия колонок источника отобразятся в заголовках колонок.
- Если пользователь щелкнет по заголовку колонки, строки будут автоматически отсортированы.
Элемент управления DataGridView предлагает гибкий способ отображения данных. Свойство DataSource может указывать на любой из следующих источников:
- массив (визуальная таблица может быть связана с любым одномерным массивом);
- DataTable;
- DataView;
- DataSet или DataViewManager;
- компоненты, реализующие интерфейс IListSource;
- компоненты, реализующие интерфейс IList;
- любой обобщенный класс коллекции или объект, унаследованный от обобщенного класса коллекции.
Каждая отдельная ячейка в DataGridView работает как встроенный элемент управления. Каждая ячейка может по-разному отображать содержащиеся в ней данные; флажки, выпадающие списки, ссылки, кнопки и текстовые поля — все эти типы ячеек поддерживаются.
Кроме возможностей по визуализации данных, каждая ячейка имеет собственный набор событий, которые можно перехватить в коде.
Добавление колонок
В самом общем случае существуют четыре возможные сценарии добавления колонок в DataGridView:
- Есть источник данных, он доступен во время разработки.
- Нет источника данных, но во время разработки доступна информация о составе и типе колонок.
- Есть источник данных, но он доступен только во время исполнения, а во время разработки ничего не известно ни о нем, ни о составе колонок.
- Нет источника данных, а состав/тип колонок выясняется динамически, во время исполнения, а во время разработки неизвестен тип и, возможно, даже количество колонок.
DataGridView позволяет в одном элементе управления иметь колонки, привязанные к данным, и колонки со свободными данными.
Источник данных доступен во время разработки
После задания значений свойств DataSource и DataMember элемент управления автоматически изучает схему источника и генерирует по колонке для каждой колонки таблицы или свойства объекта, коллекция которых используется как источник данных. При добавлении очередной колонки автоматически подбирается не только подходящий заголовок, но и ее тип. Т.е. если тип колонки будет int/decimal/string, то добавится колонка типа DataGridViewTextBoxColumn. Если колонка будет иметь тип boolean, то добавится уже DataGridViewCheckBoxColumn. Редактирование колонок осуществляется с помощью дополнительного ярлыка, находящегося в верхнем правом углу элемента управления, который предоставляет доступ к меню, состав элементов которого можно охарактеризовать как "наиболее часто используемые настройки" (рис.).
Рис.
При выборе пункта 'Edit Columns…' открывается диалог редактирования колонок (рис.).
Рис.
В нем можно удалить лишние колонки (кнопка Remove), изменить заголовок колонки (свойство HeaderText), тип колонки (свойство ColumnType) и ряд других свойств каждой колонки. В списке Selected Columns слева показываются все колонки, причем их порядок "сверху-вниз" соответствует порядку "слева-направо" элемента управления.