ПОНЯТНО О Visual Basic NET (том 3)


Программный доступ к каждой ячейке таблицы через DataGrid


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

Имейте в виду, что порядок строк в DataGrid и DataSet неодинаков. Как только вы посортируете записи в DataGrid щелчками по заголовкам полей, их порядок в сетке DataGrid, естественно, переменится. А вот в DataSet он останется прежним. Вам вполне может захотеться работать именно с ячейками DataGrid, а не DataSet. Например, заполнить список или массив из отсортированного поля из DataGrid вам может показаться приятнее, чем из того же неотсортированного поля из DataSet. Для этого вам нужен доступ к ячейкам DataGrid.

Я не буду останавливаться на многочисленных и полезных свойствах и методах DataGrid. Здесь я воспользуюсь только свойством Item, о котором удобно думать, как  о двумерном массиве ячеек DataGrid. Вот примеры:

        Debug.WriteLine(DataGrid1.Item(4, 2))

        DataGrid1.Item(5, 3) = #12/30/1831#

Если вы еще не успели отсортировать сетку, то первый оператор напечатает «Туманность Андромеды», а второй установит книге Гоголя «Сорочинская ярмарка» дату 30.12.1831.

Примечание: Вы только что программным методом установили значение #12/30/1831# в ячейке DataGrid. Автоматически оно изменилось и в DataSet. Однако, возьмите на заметку, что довести эти изменения до исходного файла базы данных у вас так просто не получится. Проще программно менять значения ячеек непосредственно в DataSet, как мы делали раньше.

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

        For i = 0 To DataSet11.Книги.Rows.Count - 1

            ListBox1.Items.Add(DataGrid1.Item(i, 2))

        Next

Пояснения: Число 2 – это номер столбца с названиями книг. Выражение DataSet11.Книги.Rows.Count – это количество (Count) строк (Rows) в таблице DataSet11.Книги.

Впрочем, вы можете настроить заполнение ListBox еще на этапе проектирования, зайдя в окно свойств и выбрав для его свойства DataSource значение DataSet11.Книги, а для свойства DisplayMember значение Nazvanie.




Начало  Назад  Вперед



Книжный магазин