private void EditButton_Click(object sender, EventArgs e)
private void EditButton_Click(object sender, EventArgs e) { //если выбрана строка в таблице if (dataGridView1. SelectedRows. Count! = 0) { //получить содержимое выбранной строки DataRow row = dataSet1. Contacts. Rows[RowId]; //изменить фамилию и имя на введенные значения row[" Fam" ] = FamTextBox. Text; row[" Name" ] = NameTextBox. Text; //сохранить изменения и обновить содержимое формы UpdateContacts(); } else MessageBox. Show(" Выберите строку для редактирования", " Ошибка" ); }
Здесь проверяется, выбрана ли строка для редактирования. Если нет, то выдается сообщение об ошибке и обработчик завершает работу. Иначе надо получть содержимое выбранной строки в объект типа DataRow. Далее значения полей Fam и Name этой строки заменяются на новые, введенные пользователем в текстовых полях, и вызывается метод UpdateContacts() для сохранения изменений в БД и обновления таблиц на форме. Т. к. таблицы БД связаны между собой, и при связывании было указано каскадное изменение и удаление записей, то после сохранения изменений в БД эти изменения отобразятся и в таблице Phones.
5. 2. 6 Изменение номера телефона Для изменения номера телефона используется кнопка Изменить, расположенная справа от списка телефонов. Исходный текст обработчика событий для этой кнопки представлен ниже:
private void EditPhoneButton_Click(object sender, EventArgs e) { //если выбрана запись для редактирования if (dataGridView2. SelectedRows. Count! = 0) { try { //получить содержимое выбранной строки DataRow row = dataSet1. Phones. Rows[PhoneId]; //изменить номер телефона на введенное значение
row[" Phone" ] = PhoneTextBox. Text; //получить из выпадающего списка фамилию, //для которой добавляется телефон string fio = FamComboBox. SelectedItem. ToString(); //составить условие для поиска этого человека //в таблице Contacts string str = " Fam='" + fio + " '"; //получить id этого человека в таблице Contacts DataRow[] contacts = dataSet1. Contacts. Select(str); //заполнить столбец " ContactId" редактируемой записи row[" ContactId" ] = contacts[0][" id" ]; } catch (Exception) { } //сохранить изменения и обновить содержимое формы UpdateContacts(); } else MessageBox. Show(" Выберите строку для редактирования", " Ошибка" ); }
Начало обработчика идентично предыдущему: если выбрана строка для редактирования, то получить ее содержимое и изменение значение номера телефона. Далее, если нужно изменить и человека, к которому этот номер телефона относится, то используется технология, описанная в пункте 5. 2. 3: поиск человека в таблице Contacts с помощью метода Select(), получение его порядкового номера ( id ) и заполнение этим значением поля ContactId таблицы Phones.
5. 2. 7 Удаление записей таблицы Contacts Для того чтобы удалить строку, выделенную пользователем в списке контактов, нужно воспользоваться кнопкой Удалить. Ниже приведен исходный текст метода, выполняющего обработку событий от этой кнопки:
private void DelContactButton_Click(object sender, EventArgs e) { //если выбрана запись для удаления if (dataGridView1. SelectedRows. Count! = 0) { if (MessageBox. Show(" Вы действительно хотите удалить запись? ", " Подтверждение", MessageBoxButtons. YesNo) == DialogResult. Yes) { try { //удалить выбранную строку dataSet1. Contacts. Rows[RowId]. Delete(); }
catch (Exception) { } //обновить БД и ее содержимое на форме UpdateContacts(); } } else MessageBox. Show(" Выберите строку для удаления", " Ошибка" ); }
После проверки, выбрана ли в таблице строка для удаления и вывода подтверждающего сообщения, непосредственное удаление записи выполняется методом Delete(), после чего изменения сохраняются в базу данных и отображаются на форме. При связывании таблиц Contacts и Phones в списке Правило удаления было выбранозначение Cascade, задающее режим автоматического внесения изменений в дочернюю таблицу при удалении записей родительской таблицы. Поэтому при удалении строк родительской таблицы происходит удаление соответствующих строк дочерней таблицы.
5. 2. 8 Удаление номера телефона Для удаления номера телефона предназначена кнопка Удалить, расположенная возле списка телефонов. Далее приведен обработчик событий для этой кнопки:
private void DelPhoneButton_Click(object sender, EventArgs e) { //если выбрана запись для удаления if (dataGridView2. SelectedRows. Count! = 0) { if (MessageBox. Show(" Вы действительно хотите удалить запись? ", " Подтверждение", MessageBoxButtons. YesNo) == DialogResult. Yes) { try { //удалить выбранную строку dataSet1. Phones. Rows[PhoneId]. Delete(); } catch (Exception) { } //обновить БД и ее содержимое на форме UpdateContacts(); } } else MessageBox. Show(" Выберите строку для удаления", " Ошибка" ); } Код обработчика идентичен предыдущему (естественно, работа идет с таблицей Phones и компонентом dataGridView2 ).
5. 2. 9 Фильтрация данных В данном приложении приведен пример фильтра, который позволяет просматривать номера телефона одного, выбранного человека. Фамилия этого человека выбирается в выпадающем списке FamComboBox. Режим фильтрации включается флажком FilterCheckBox. Код обработки щелчка по этому флажку приведен ниже:
Воспользуйтесь поиском по сайту: ©2015 - 2025 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|