Для создания новых записей в связанном с данными приложении выполните перечисленные ниже действия.
1. Создайте в форме новую кнопку с именем btnNew и укажите значение New (Ввести новые данные) для ее свойства Text.
2. Щелкните дважды на кнопке и введите приведенный ниже код обработки события щелчка на этой кнопке.
>Private Sub btnNew_Click(ByVal sender As System.Object, _
> ByVal e As System.EventArgs) Handles btnNew.Click
> Me.BindingContext(DsCustomer1, "tblCustomer").AddNew()
> txtFirstName.Focus()
> ShowDataStatus()
>End Sub
3. Запустите приложение и щелкните на кнопке New. После очистки текстового поля пользователь сможет ввести в форме новую запись. Для сохранения новой записи нужно перейти к другой записи с помощью кнопок Next или Previous.
Учтите, что кнопки Next или Previous фиксируют обновления объекта DataSet, поэтому в данном примере не нужно использовать явные инструкции обновления объекта DataSet после создания новой записи. В данном случае достаточно просто перейти к другой записи. Но если пользователь закроет приложение до фиксации новых данных в базе данных (либо неявно с помощью перехода к другой записи, либо явно с помощью метода Update объекта DataAdapter), то новые данные будут утрачены.
Кроме того, пользователю обычно предоставляют возможность отмены внесенных изменений с помощью метода CancelCurrentEdit объекта BindingContext.
Удаление записей из связанной с данными формы
Для удаления записей из связанной с данными формы на основе Windows Forms нужно использовать метод RemoveAt объекта BindingContext. Этот метод принимает один параметр – индекс удаляемой записи. Для организации удаления текущей записи нужно использовать свойство Position в качестве параметра метода RemoveAt объекта BindingContext, как показано в листинге 1.3.
>Private Sub btnDelete_Click(ByVal sender As System.Object, _
> ByVal e As System.EventArgs) Handles btnDelete.Click
> If MsgBox("Whoa bubba, you sure?", MsgBoxStyle.YesNo, "Delete record") = MsgBoxResult.Yes Then
> With Me.BindingContext(DsCustomer1, "tblCustomer")
> RemoveAt(.Position)
> End With
> End If
>End Sub
Этот код основан на созданной перед этим кнопке btnDelete. Учтите, что эта процедура запрашивает пользователей, действительно ли они хотят удалить запись. Этот запрос позволяет избежать неприятных последствий в случае, если пользовательский интерфейс создан так, что пользователь может случайно удалить запись, щелкая на кнопке Delete. (Обратите внимание, что, кроме этого способа на основе диалогового окна с предупреждением об удалении записи, можно применять более сложные методы отката ошибочных изменений данных. Однако описание таких сложных конструкций выходит за рамки данной главы.)
Учтите, что метод RemoveAt способен определять и обрабатывать стандартные исключительные ситуации, например при отсутствии данных или после очистки данных в элементе управления пользовательского интерфейса при вызове метода AddNew. Эта возможность позволяет значительно усовершенствовать методы контроля над связанными сданными элементами управления в прежних версиях Visual Basic, для которых требовалось создавать громоздкий код обработки исключительных ситуаций, возникающих при выполнении пользователями непредсказуемых действий.