Обновление информации в базе данных



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

Когда данные изменились в DataSet, вы должны инициализировать внесение этих изменений в исходную базу данных. Объект DataAdapter может выполнить эти действия через свой метод update, который проверяет каждую запись в DataSet и, если были сделаны изменения, отправляет их в исходную базу данных.

 

В следующем примере вы добавите кнопку на форму, нажав которую пользователи смогут инициализировать процесс отправки изменении в базу данных.

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

1. Из вкладки Windows Forms окна Toolbox, перенесите на форму элемент управления Button.

2. Измените свойство кнопки Text с Button2 на Обновить данные.

3. Двойным щелчком на кнопке создайте заготовку модуля обработки события Click.

4. В нем, вызовите метод Update объекта oleDbDataAdapter1, который внесет изменения в базу данных.

5. Используйте объект MessageBox для вывода информации об успешном завершении операции обновления данных.

Программный код, показанный в листинге 4.3, иллюстрирует вызов этих методов.

Листинг 4.3

‘ Visual Basic

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

OleDbDataAdapterl.Update(DataSetll)

MessageBox.Show("Данные успешно обновлены!")

End Sub

 

// C#

private void Button2_Click(object sender, System.EventArgs e)

{

oleDbDataAdapter1.Update(dataSet11) ;

MessageBox.Show("Данные успешно обновлены!") ;

}

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

 

 

Рис. 4.20. Возврат изменений пользователя в базу данных

 

Доступ к данным в Windows-формах с использованием текстовых полей

Вначале несколько модифицируем форму предыдущего примера:

□ добавим несколько элементов управления TextBox для отображения информации;

□ установим связь этих элементов с уже созданным объектом Dataset;

□ добавим управляющие элементы Button, обеспечивающие навигацию (перемещение) по записям базы данных;

□ добавим элементы Label, отображающие надписи к текстовым полям, а также номер текущей записи.

В текстовые поля будем выводит следующую информацию из таблицы authors базы данных Pubs: имя — au_lname, фамилию — au_fname , город — city и код штата — state.

Для реализации выше описанного выполните следующие действия.

1- Добавьте на форму, созданную в предыдущем разделе, следующие элементы управления: 4 элемента TextBox, 2 элемента Button, 6 элементов Label.

2- Расположите их на форме, как показано на рис. 4.21.

 

 

Рис. 4.21. Расположение добавленных элементов на форме

 

3. Измените свойства этих элементов в соответствии с табл. 4.1.

 

  Таблица 4.1. Значения свойств элементов управления
Элемент Назначение Свойство Name Свойство Text
Label Надпись "Имя" Label1 Имя
TextBox Имя (поле аu_lname) TextBox1  
Label Надпись "Фамилия" Label2 Фамилия
TextBox Фамилия (поле au_fname) TextBox2  
Label Надпись"Город" Label3 Город
TextBox Город (поле city) TextBox3  
Label Надпись "Код штата" Label4 Код штата
TextBox Код штата (поле state) TextBox4  
Label Надпись "Номер записи" Label5 Номер записи
Label Номер записи Label6
Button Сдвиг на запись вверх Button3 Вверх
Button Сдвиг на запись вниз Button4 Вниз

 

После выполненных действий вы получите форму следующего вида (рис. 4.22).

 

 

Рис. 4.22. Элементы управления формы после переопределения их свойств

 

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

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

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

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

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

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

 

 

 

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

 

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

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

}

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


Дата добавления: 2018-02-15; просмотров: 782; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!