
- •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.2. Отображение номера текущей записи
В завершении реализуем метод ShowPosition для отображения номера текущей записи и суммарного количества записей в наборе данных. Эту информацию будем отображать в элементе управления Label6.
Создайте метод (модуль) с именем ShowPosition. В этом модуле получите текущую позицию из свойства Position, а число записей — из свойства Count объекта BindingContext и отобразите их в элементе управления Label6. Программный код будет выглядеть следующим образом (листинг 4.6).
Листинг 4.6
' Visual Basic
Private Sub ShowPosition()
Dim iCnt As Integer 'Количество записей
Dim iPos As Integer 'Номер записи
iCnt=Me.BindingContext(DataSet11, "authors").Count
If iCnt=0 Then
Label6.Text="(No records)"
Else
iPos=Me.BindingContext(DataSet11, "authors").Position+1
Label6.Text=iPos.ToString & " из " & iCnt.ToString
End If
End Sub
// C#
private void ShowPosition()
{
int iCnt;
int iPos;
iCnt=this.BindingContext[dataSet11, "authors"].Count;
iPos=this.BindingContext[dataSet11, "authors"].Position+1;
if (iCnt==0)
{
label6.Text="(No records)";
}
else
{
label6.Text=iPos.ToString() + " из " + iCnt.ToString() ;
}
}
Добавьте вызов метода ShowPosition в обработчик события click кнопки Button3 (листинг 4.7).
Листинг 4.7
' Visual Basic
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System. EventArgs) Handles btnPrevious.Click
Me.BindingContext(DataSetll, "authors").Position -=1
ShowPosition()
End Sub
// C#
private void Button3_Click(object sender, System.EventArgs e)
{
this.BindingContext[dataSet11, "authors"].Position -=1;
ShowPosition();
}
Аналогично запрограммируйте действие кнопки Button4 ( листинг 4.8).
Листинг 4.8
' 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
ShowPosition()
End Sub
// C#
private void Button4_Click(object sender, System.EventArgs e)
{
this.BindingContext[dataSet11, "authors"].Position+=1;
ShowPosition() ;
}
Запустите приложение и проверьте работу элементов, отображающих текущую запись набора данных.
4.5. Выборка и сортировка данных через запросы с параметрами
Традиционно при работе с информационными системами пользователю нужна не вся информация из базы данных. Например, требуется выбрать заказы только определенного клиента или книги одного автора и т. п. В этом случае пользователь вводит в определенные элементы формы (или выбирает из справочных таблиц) некую ключевую информацию, на основе которой формируется запрос, возвращающий только заказанные данные.
Использование запросов с параметрами обеспечивает вашему приложению более эффективную работу, позволяя получать отфильтрованные и отсортированные записи и значительно снизить сетевой трафик.
В следующем примере вы модифицируете Windows-форму, которая будет показывать только определенных авторов из базы данных Pubs SQL-севера. Пользователи будут вводить код штата США (например, са для Калифорнии) и объект DataSet будет заполняться данными только тех авторов, которые проживают в данном штате. Для этого необходимо добавить на форму элемент, обеспечивающий пользователю ввод кода штата, модифицировать объекты доступа к данным таким образом, чтобы они возвращали только необходимые пользователю записи.
Для реализации этого примера вам необходимо иметь доступ к базе данных pubs, которая устанавливается при инсталляции MS SQL Server.
Для реализации примера потребуется несколько шагов:
создание формы;
создание и конфигурирование набор данных, на этом этапе будет создан и SQL-запрос, который будет заполнять набор данных записями из базы данных;
добавление элементов отображения информации на форме;
добавление программного кода, который будет обновлять набор данных после того, как пользователь присвоит новые значения параметрам запроса;
добавление программного кода, чтобы обеспечить перемещение между записями набора данных.