Опубликован: 31.08.2006 | Уровень: специалист | Доступ: платный
Лекция 21:

Представление данных с помощью элемента управления DataGrid

< Лекция 20 || Лекция 21: 123 || Лекция 22 >

Форматирование ячеек DataGrid

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

Установка свойств сетки данных при разработке

  1. Отобразите форму и щелкните на объекте сетки данных, а затем откройте окно Properties (Свойства).
  2. Установите свойство PreferredColumnWidth на значение 110. Установка 110 (указанного в пикселях) предоставит достаточно места для данных в полях таблицы Instructors.
  3. Установите свойство ColumnHeadersVisible на значение False. Это свойство удалит имена полей, полученных из таблицы. Это полезно, если имена полей в вашей базе данных не достаточно ясно определяют их содержимое, или если имена полей содержат аббревиатуры или слова, которые вы хотите скрыть от пользователей.
  4. Щелкните на свойстве BackColor, на стрелке раскрывающегося списка, на закладке Custom, а затем выберите для ячеек сетки данных светло-желтый цвет. Свойство BackColor управляет цветом, которым отображается фон ячеек сетки данных. Если вы меняете эту настройку, она обычно дает эффект чередования цвета (белый и выбранный вами цвет) строк сетки данных. (Заметьте, что цвет, который используется вокруг краев ячеек сетки, управляется свойством BackgroundColor.) Помните, что цветом текста по умолчанию является черный, так что при изменении этого параметра выбирайте цвет фона так, чтобы он хорошо выглядел в сочетании с черным. (Если вы меняете значение по умолчанию этого свойства, не увлекайтесь использованием отвлекающих внимание цветов.)

    Совет. Чтобы изменить цвет фона, используемый в ячейках заголовков, измените свойство HeaderBackColor.
  5. Щелкните на свойстве GridLineColor, нажмите стрелку раскрывающегося списка, выберите закладку Custom, а затем Blue (Синий). Это свойство устанавливает цвет линий сетки данных. Если вы меняете цвет фона ячеек, вы также можете изменить и цвет линий сетки. Теперь запустите программу и посмотрите эффект от ваших изменений форматирования.
  6. Щелкните на кнопке Start (Начать).
  7. Щелкните на кнопке Загрузить. Появится сетка данных, заполненная информацией из таблицы Instructors.
  8. Измените размер формы, так, чтобы на ней поместились более широкие столбцы. Ваш экран будет выглядеть примерно так.


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

  9. Чтобы завершить выполнение программы, щелкните на кнопке Закрыть формы. Просмотрите окно Properties (Свойства) на предмет дополнительных свойств и настроек - в нем есть несколько других возможностей, и вы увидите их при внимательном изучении списка опций форматирования.

Следующий шаг: обновление содержимого базы данных

Объект набора данных в вашей программе является всего лишь представлением данных, содержащихся в вашей базе данных. Это верно и в отношении информации, хранящейся в сетке данных в вашей форме - если пользователь делает в этих данных изменения, они не записываются обратно в базу данных, если вы специально не укажете объекту адаптера данных вашей программы сделать такие изменения. Разработчики ADO.NET и Visual Studio создали такую взаимосвязь с целью защиты базы данных и для того, чтобы позволить свободно манипулировать данными в ваших программах - не зависимо от того, хотите вы сохранять изменения или нет.

В следующем упражнении вы изучите свойство ReadOnly объекта DataGrid, которое включает или отключает возможность внесения изменений в сетку данных. Вы также узнаете, как использовать метод Update, который записывает изменения обратно в вашу базу данных на диске, если вам нужна такая функция.

Обновление базы данных

  1. Щелкните на объекте сетки данных формы, а затем откройте окно Properties (Свойства).
  2. Прокрутите его до свойства ReadOnly и изучите параметры этого свойства. Если свойство ReadOnly установлено на False, пользователь может вносить изменения в информацию, находящуюся в ячейках сетки данных. Если вы хотите позволить пользователям изменять информацию в базе данных, с которой соединена ваша программа, то вы должны сохранить это значение по умолчанию. Если вы хотите отключить редактирование, вы должны установить свойство ReadOnly на значение True. Сейчас сохраните значение False по умолчанию и протестируйте обновление базы данных Students.mdb.
  3. Используйте элемент управления Button и нарисуйте в нижней части формы объект кнопки.
  4. Установите свойство Anchor объекта кнопки на значение Bottom, Left, свойство Name на значение btnUpdate, а свойство Text на значение Обновить. Это та кнопка, на которой пользователь будет щелкать, когда нужно передать изменения в базу данных.
  5. Сделайте двойной щелчок мышью на кнопке Обновить, а затем введите в процедуре события btnUpdate_Click следующий код программы:

    Try
    OleDbDataAdapter1.Update(DsInstructors1)
    	Catch ex As Exception
    	MsgBox(ex.ToString)
    End Try

    Этот оператор программы использует для записи всех изменений, сделанных в наборе данных DsInstructors1, метод Update объекта OleDbDataAdapter1. Когда вы делаете изменения в сетке данных, набор данных, с которым связан этот объект, автоматически обновляется. Однако если вы хотите записать все изменения обратно в базу данных, сделайте еще один шаг для обновления адаптера данных программы.

  6. Чтобы проверить как работает ваше дополнение к программе DataGrid Sample, щелкните на кнопке Start (Начать).

    Примечание. Готовая программа DataGrid Sample лежит в папке c:\vbnet03sbs\Гл.20\datagrid sample.
  7. Щелкните на кнопке Загрузить. Появится сетка данных, заполненная данными из таблицы Instructors базы данных Students.mdb.
  8. Измените размер формы и содержимое одной из ячеек сетки данных. Для этого выделите существующее значение с помощью мыши, нажмите клавишу (Del), а затем введите новое значение. При вводе изменений в левом заголовке строки появится небольшой значок с изображением карандаша, указывающий на то, что сделаны изменения. Ваш экран будет выглядеть примерно так.

    Когда вы щелкните на другой ячейке сетки, изменение будет записано в набор данных DsInstructors1.

  9. Щелкните на кнопке Обновить. Для записи измененного набора данных в базу данных Visual Basic использует метод Update объекта адаптера данных программы. После этого база данных Students.mdb будет изменена.
  10. Щелкните в ячейке последней строки, которая содержит в левом заголовке строки значок звездочки.
  11. Измените ячейки, которые содержат значения (null). В сетке появится новая строка.
  12. Щелкните на кнопке Обновить. Новая строка будет вставлена в таблицу Instructors базы данных Students.mdb.


  13. Щелкните на левом заголовке строки, которую вы только что добавили, чтобы выбрать ее, а затем нажмите на клавишу (Delete). Строка удалится.
  14. Щелкните на кнопке Загрузить. Удаленная строка появится вновь. Почему это так? Разве вы только что не удалили ее? Строка была удалена из набора данных DsInstructors1, но продолжает существовать в базе данных Students.mdb. Чтобы полностью удалить строку, щелкните на кнопке Обновить для обновления базы данных.
  15. Если хотите, сделайте еще несколько изменений, а когда закончите, закройте программу.

Поздравляем! Вы научились отображать несколько полей и записей с помощью элемента управления DataGrid, узнали, как настраивать сетку данных с помощью свойств, а также как записывать обновления из сетки обратно в базу данных. Если вы хотите больше узнать о программировании ADO.NET, обратитесь к одной из книг или ресурсов, которые приведены в Приложении B.

Краткая справка по лекции 20

Чтобы Сделайте следующее
Создать в форме объект сетки данных Щелкните на закладке Windows Forms в окне Области элементов, а затем перетащите элемент управления DataGrid из Области элементов в вашу форму. Измените размер объекта сетки данных и установите свойство Anchor так, чтобы он изменял свои размеры вместе с формой.
Связать сетку данных с активным набором данных программы Установите свойство DataSource сетки данных равным набору данных, который вы хотите использовать, а свойство DataMember равным дочернему списку этого набора данных.
Заполнить сетку данных данными их набора данных

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

DsInstructors1.Clear()
OleDbDataAdapter1.Fill(DsInstructors1)
Отсортировать записи в сетке данных во время выполнения программы Щелкните на заголовке столбца сетки, по которому вы хотите произвести сортировку. Visual Basic отсортирует сетку данных по этому столбцу в алфавитном порядке.
Изменить направление сортировки Чтобы изменить направление сортировки (с A-Z на Z-A), щелкните на заголовке столбца сетки второй раз.
Запретить сортировку сетки данных Установите свойство AllowSorting сетки данных на значение False.
Изменить ширину ячеек сетки данных по умолчанию Установите свойство PreferredColumnWidth сетки данных.
Изменить цвет фона ячеек сетки данных Установите свойство BackColor сетки данных.
Запретить внесение изменений в сетку данных Установите свойство ReadOnly сетки данных на значение True.
Записать изменения, сделанные в сетке данных, обратно в базу данных Используйте в процедуре события, исполняемой, когда пользователь хочет записать изменения в базу данных, метод Update адаптера данных. Например, следующий оператор программы записывает обратно в базу данных изменения, сделанные в наборе данных DsInstructors1: OleDbDataAdapter1.Update(DsInstructors1)
< Лекция 20 || Лекция 21: 123 || Лекция 22 >
Сайдахмад Зарипов
Сайдахмад Зарипов
Жанболат Шаймерден
Жанболат Шаймерден

Можно ли выбирать язык для надписей и команд в среде разработки?

Виталий Григорьев
Виталий Григорьев
Россия, москва, мгсги, 2011
Надежда Серекпаева
Надежда Серекпаева
Россия, Тюмень, Тюменский индустриальный институт, 1992