Студопедия КАТЕГОРИИ: АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Private void DelPhoneButton_Click(object sender, EventArgs e) ⇐ ПредыдущаяСтр 4 из 4
{ //если выбрана запись для удаления if (dataGridView2.SelectedRows.Count != 0) { if (MessageBox.Show("Вы действительно хотите удалить запись?", "Подтверждение", MessageBoxButtons.YesNo) == DialogResult.Yes) { try { //удалить выбранную строку dataSet11.Phones.Rows[PhoneId].Delete(); } catch (Exception) { } //обновить БД и ее содержимое на форме UpdateContacts(); } } else MessageBox.Show("Выберите строку для удаления", "Ошибка"); } Код обработчика идентичен предыдущему (естественно, работа идет с таблицей Phones и компонентом dataGridView2).
Фильтрация данных В данном приложении приведен пример фильтра, который позволяет просматривать номера телефона одного, выбранного человека. Фамилия этого человека выбирается в выпадающем списке FamComboBox. Режим фильтрации включается флажком FilterCheckBox. Код обработки щелчка по этому флажку приведен ниже:
Private void FilterCheckBox_CheckedChanged(object sender, EventArgs e) { //если установлен флажок и выбрана фамилия if (FilterCheckBox.Checked && FamComboBox.Text != "") { //получить выбранную фамилию string fio = FamComboBox.SelectedItem.ToString(); //составить условие для поиска нужного человека //в таблице Contacts string str = "Fam='" + fio + "'"; //найти нужного человека в таблице Contacts DataRow[] contacts = dataSet11.Contacts.Select(str); //составить условие для фильтра str = "ContactId=" + contacts[0]["id"]; //применить фильтр phonesBindingSource.Filter = str; } else //отменить фильтрацию phonesBindingSource.Filter = ""; }
В начале работы метода проверяется, установил ли пользователь флажок фильтрации и задал ли требуемую фамилию. Так как фильтрация будет задаваться для таблицы Phones, а поле «фамилия» находится в таблице Contacts, необходимо получить идентификатор (порядковый номер) требуемой фамилии, чтобы потом найти его в таблице телефонов. Получить выбранную фамилию из выпадающего списка можно методом SelectedItem, а отобрать запись с этой фамилией из таблицы Contacts – методом Select(). Далее из полученной записи выделяется значение поля id, на основе которого задается условие для фильтрации: ContactId = <значение поля id>. Сформированный фильтр применяется к компоненту phonesBindingSource с помощью свойства Filter. Этот компонент генерируется автоматически при добавлении адаптеров доступа к базе данных. Если флажок FilterCheckBox не отмечен или в списке не выбрана фамилия, свойству Filter присваивается значение пустой строки, т.е. фильтрация отменяется.
Задание для самостоятельной работы Добавить в программу предыдущей лабораторной работы возможность добавления, редактирования и удаления записей базы данных, а также фильтрацию по двум (любым) полям. При этом хотя бы один фильтр должен использовать связи между таблицами (фильтрация осуществляется в одной таблице, а поле для фильтра берется из другой).
|
||
Последнее изменение этой страницы: 2018-06-01; просмотров: 206. stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда... |