Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПИС ИМОП 2.doc
Скачиваний:
4
Добавлен:
23.08.2019
Размер:
6.07 Mб
Скачать

4.4.1. Связывание элементов TextBox с набором данных

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

Для связи текстовых полей с DataSet выполните следующие действия.

  1. Вернитесь в окно дизайнера формы.

  2. Выделите элемент TextBox1 и нажмите кнопку <F4> для перехода в окно свойств этого элемента.

  3. Найдите свойство DataBindings и раскройте его (рис. 4.23), щелкнув мышью на значке "+" в его вершине.

Рис. 4.23. Свойство DataBindings текстового поля

  1. Из раскрывшегося списка выберите свойство Text, в пустой строке которого нажмите кнопку, после чего появится дополнительное окно со структурой объекта DataSet11.

  2. Раскройте содержимое объекта 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;

}

Запустите приложение и проверьте, что созданные кнопки действительно осуществляют перемещение по записям.