- •4.6. Работа со связанными таблицами в Windows-формах 42
- •4.7. Представление связанных таблиц в элементе управления DataGrid 54
- •4.7.1. Создание Windows-формы 54
- •4. Построение Windows-приложений с доступом к данным через adо.Net
- •4.1. Создание Windows-приложения
- •4.2. Windows-форма как основа интерфейса
- •4.3. Доступ к данным в Windows-формах с использованием элемента управления DataGrid
- •4.3.1. Создание проекта и формы
- •4.3.2. Создание набора данных DataSet
- •Создание и конфигурирование элементов доступа к данным Connection и DataAdapter
- •Создание объекта DataSet
- •4.3.3. Добавление элемента управления DataGrid для отображения данных
- •4.3.4. Заполнение элемента управления DataGrid данными
- •4.3.5. Обновление информации в базе данных
- •4.4. Доступ к данным в Windows-формах с использованием текстовых полей
- •4.4.1. Связывание элементов TextBox с набором данных
- •4.4.2. Отображение номера текущей записи
- •4.5. Выборка и сортировка данных через запросы с параметрами
- •4.5.1. Создание Windows-формы
- •4.5.2. Создание и конфигурирование объектов DataConnection и DataAdapter
- •4.5.3. Создание набора данных
- •4.5.4. Добавление элементов отображения данных
- •4.5.5. Добавление кода для заполнения набора данных
- •4.5.6. Связывание текстовых полей с набором данных
- •4.5.7. Добавление навигации по записям
- •4.5.8. Отображение номера текущей записи
- •4.5.9. Тестирование работы приложения
- •4.6. Работа со связанными таблицами в Windows-формах
- •4.6.1. Создание и Windows-формы
- •4.6.2. Конфигурирование DataConnection и Data Adapter
- •4.6.3. Создание набора данных Dataset
- •4.6.4. Создание реляционных связей между таблицами набора данных
- •4.6.5. Добавление элементов отображения данных
- •Отображение издательств в элементе ListBox
- •Отображение наименований книг в элементе DataGrid
- •4.6.6. Заполнение набора данных
- •4.6.7. Тестирование приложения
- •4.7. Представление связанных таблиц в элементе управления DataGrid
- •4.7.1. Создание Windows-формы
- •4.7.2. Конфигурирование объектов DataConnection и DataAdapter
- •4.7.3. Добавление элементов управления
- •4.7.4. Заполнение набора данных и создание реляционных связей
- •4.7.5. Тестирование приложения
4.4.1. Связывание элементов TextBox с набором данных
Четыре текстовых поля предназначены для отображения информации из одной записи набора данных. Для того чтобы содержимое текстовых полей автоматически обновлялось при смене записи, их необходимо связать с соответствующими колонками набора данных DataSet. Для связывания с данными обычно используется свойство элементов управления TextBox.
Для связи текстовых полей с DataSet выполните следующие действия.
Вернитесь в окно дизайнера формы.
Выделите элемент TextBox1 и нажмите кнопку <F4> для перехода в окно свойств этого элемента.
Найдите свойство DataBindings и раскройте его (рис. 4.23), щелкнув мышью на значке "+" в его вершине.
Рис. 4.23. Свойство DataBindings текстового поля
Из раскрывшегося списка выберите свойство Text, в пустой строке которого нажмите кнопку, после чего появится дополнительное окно со структурой объекта DataSet11.
Раскройте содержимое объекта dataSet11 и выберите из таблицы authors то поле, с которым вы хотите связать с элементом формы TextBox1 (в данном случае мы связываем с au_lname). Щелкните мышью на au_lname. В результате этих действий свойству Text будет присвоено значение authors.au_lname объекта dataSet11 (рис. 4.24).
Рис. 4. 24. Связывание текстового поля со столбцом таблицы DataSet
6. Повторите шаги 2, 5 для остальных текстовых полей (TextBox2, TextBox3, TextBox4), связав их с элементами набора данных dataSet11 — authors.au_fname, dataSet11 — authors.city, dataSet11 —authors.state.
После этих действий уже можно посмотреть результаты своего труда. Запустите приложение и заполните сетку данными, нажав кнопку Загрузить. Если все было сделано правильно, то вы увидите, что в текстовых полях отображается та же информация, что и в DataGrid (рис. 4.25).
Теперь попробуйте скорректировать информацию в текстовом поле, а затем передвинуться на другую строку в DataGrid. Ваша корректировка немедленно будет отражена в сетке данных. Это говорит о том, что действительно между текстовыми полями TextBox и колонками набора данных DataSet установлена связь. Однако ваши исправления не будут зафиксированы в исходной таблице базы данных, пока вы не нажмете кнопку Обновить данные, что подтверждает факт вашей работы в отрыве от исходной таблицы authors базы данных Pubs.
Если данные отображаются в элементе DataGrid, то навигация по записям осуществляется достаточно просто — либо мышью, либо клавишами со стрелками. При отображении данных в текстовых полях на форму необходимо добавлять элементы управления, обеспечивающие переход от одной записи к другой. Мы для этой цели добавили на форму две кнопки Вниз, Вверх.
Рис. 4.25. Отображение данных в элементе DataGrid и текстовых полях
Номер текущей записи, можно получить (или задать) из свойства Position объекта BindingContext. Изменяя значение этого свойства, вы будете перемещать указатель записи на нужную позицию. Для определения количества записей в таблице данных можно обратиться к свойству count объекта BindingContext. Итак, добавим программный код к кнопкам, обеспечивающим навигацию по записям.
Двойным щелчком на кнопке Вверх (Button3) создайте обработчик события Click. Добавьте программный код (листинг 4.4), обеспечивающий переход на предыдущую запись путем уменьшения на 1 свойства Position объекта BindingContext:
Листинг 4.4
' Visual Basic
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System. EventArgs) Handles btnPrevious.Click
Me.BindingContext(DataSetl1, "authors").Position -=1
End Sub
// C#
private void Button3_Click(object sender, System.EventArgs e)
{
this.BindingContext[DataSetl1, "authors"].Position -=1;
}
По аналогии для кнопки Вниз (Button4) добавьте программный код (листинг 4.5), обеспечивающий переход на следующую запись путем увеличения на 1 свойства Position объекта BindingContext.
Листинг 4.5
' Visual Basic
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System. EventArgs) Handles btnPrevious.Click
Me.BindingContext(DataSetll, "authors").Position+=1
End Sub
// C#
private void Button4_Click(object sender, System.EventArgs e)
{
this.BindingContext[DataSetll, "authors"].Position+=1;
}
Запустите приложение и проверьте, что созданные кнопки действительно осуществляют перемещение по записям.