Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Private void DelPhoneButton_Click(object sender, EventArgs e)




{

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

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 не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...