Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LR_6_Tekhnologia_programmirovania.docx
Скачиваний:
45
Добавлен:
20.03.2016
Размер:
91.4 Кб
Скачать

3.2.5. Редактирование записей таблицы Contacts

Для того чтобы отредактировать имя или фамилию человека, нужно выделить требуемую строку в таблице DataGridView1, содержащей записи таблицы Contacts. После этого только что рассмот­ренный обработчик события RowHeaderMouseClick запишет имя и фамилию в текстовые поля редактирования Имя и Фамилия соответственно.

Отредактировав имя или фамилию, пользователь должен щелкнуть кнопку Изме­нить. Ниже приведен исходный текст обработчика событий для этой кнопки, изме­няющего содержимое ячеек соответствующей строки в таблице Contacts.

private void EditButton_Click(object sender, EventArgs e)

{

//если выбрана строка в таблице

if (dataGridView1.SelectedRows.Count != 0)

{

//получить содержимое выбранной строки

DataRow row = dataSet11.Contacts.Rows[RowId];

//изменить фамилию и имя на введенные значения

row["Fam"] = FamTextBox.Text;

row["Name"] = NameTextBox.Text;

//сохранить изменения и обновить содержимое формы

UpdateContacts();

}

else

MessageBox.Show("Выберите строку для редактирования",

"Ошибка");

}

Здесь проверяется, выбрана ли строка для редактирования. Если нет, то выдается сообщение об ошибке и обработчик завершает работу. Иначе надо получть содержимое выбранной строки в объект типа DataRow. Далее значения полей Fam и Name этой строки заменяются на новые, введенные пользователем в текстовых полях, и вызывается метод UpdateContacts() для сохранения изменений в БД и обновления таблиц на форме.

Т.к. таблицы БД связаны между собой, и при связывании было указано каскадное изменение и удаление записей, то после сохранения изменений в БД эти изменения отобразятся и в таблице Phones.

3.2.6. Изменение номера телефона

Для изменения номера телефона используется кнопка Изменить, расположенная справа от списка телефонов. Исходный текст обработчика событий для этой кнопки представлен ниже:

private void EditPhoneButton_Click(object sender, EventArgs e)

{

//если выбрана запись для редактирования

if (dataGridView2.SelectedRows.Count != 0)

{

try

{

//получить содержимое выбранной строки

DataRow row = dataSet11.Phones.Rows[PhoneId];

//изменить номер телефона на введенное значение

row["Phone"] = PhoneTextBox.Text;

//получить из выпадающего списка фамилию,

//для которой добавляется телефон

string fio = FamComboBox.SelectedItem.ToString();

//составить условие для поиска этого человека

//в таблице Contacts

string str = "Fam='" + fio + "'";

//получить id этого человека в таблице Contacts

DataRow[] contacts = dataSet11.Contacts.Select(str);

//заполнить столбец "ContactId" редактируемой записи

row["ContactId"] = contacts[0]["id"];

}

catch (Exception)

{

}

//сохранить изменения и обновить содержимое формы

UpdateContacts();

}

else

MessageBox.Show("Выберите строку для редактирования",

"Ошибка");

}

Начало обработчика идентично предыдущему: если выбрана строка для редактирования, то получить ее содержимое и изменение значение номера телефона.

Далее, если нужно изменить и человека, к которому этот номер телефона относится, то используется технология, описанная в пункте 2.2.3: поиск человека в таблице Contacts с помощью метода Select(), получение его порядкового номера (id) и заполнение этим значением поля ContactId таблицы Phones.