Все о DataGridView. Учебник - Страница 12

>

Другой способ создания разнородных строк или ячеек – воспользоваться методом DataGridViewRow.CreateCells(). Этот метод заполняет экземпляр строки ячейками, считываемыми из экземляра DataGridView, указанного в качестве параметра. У этого метода есть два перегруженных варианта, второй из которых, кроме всего прочего, позволяет задать значения ячеек. Ниже приведен пример, в котором создается новая строка, описание колонок которой считывается из DataGridView, после чего одна из ячеек заменяется другой, с другим типом, после чего строка добавляется в DataGridView:

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

Заносим данные в ячейки. Режим свободных данных.

Чаще всего данные попадают в DataGridView из подключенного источника данных. При этом встроенный механизм Windows Forms Data Binding автоматически заполняет каждую ячейку значением из соответствующей ячейки источника. Но, как вы уже знаете, новый control поддерживает также специальный режим отображения «свободных» (не привязанных, unbound) данных. Кроме того, поддерживается комбинированный режим одновременного отображения связанных и свободных данных.

Немного терминологии для начала... Свободными данными называются данные, заносимые в ячейки вручную. Связанными данными называются данные, заносимые в ячейки автоматически из привязанного источника данных. Будут ли данные считаться связанными или свободными, определяется на уровне колонок.

Колонка становится связанной, если в ее свойство DataGridViewColumn.DataPropertyName (типа string) заносится название колонки или свойства объекта из источника данных. Колонка считается свободной, если упомянутое свойство становится равным пустой строке.

Если свойство AutoGenerateColumns выставлено в true, DataGridView не только генерирует новый список колонок при подключении источника данных, но и привязывает эти колонки к колонкам или свойствам источника данных.

Однако это не означает, что нельзя управлять привязкой колонок после их автоматического формирования. Разберем следующий пример. Допустим, у нас есть две простые таблицы (рисунок 10).



Рисунок 10.

Следующий код подключает MyTbl1 к grid-у через BindingSource и, в демонстрационных целях, удаляет колонку City1:

При этом остается две привязанные колонки, заполненные данными из БД:



Рисунок 11.

Теперь добавим третью колонку:

и получим смешанный режим: две привязанные и одна свободная колонка:



Рисунок 12.

Наконец, привяжем только что созданную колонку grid-а к колонке из источника данных: