Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

private void AddPhoneButton_Click(object sender, EventArgs e)




private void AddPhoneButton_Click(object sender, EventArgs e)

{

//если поле ввода телефона не пустое

//и выбрана какая-либо фамилия

if (PhoneTextBox. Text! = " " & & FamComboBox. Text! = " " )

{

   try

   {

       //создать новую запись таблицы Phones

       DataRow row = dataSet1. Phones. NewRow();

       //заполнить столбец " номер телефона"

       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" ];

       //добавить запись в таблицу

       dataSet1. Phones. Rows. Add(row);

       //обновить форму

       UpdateContacts();

   }

   catch (Exception)

   {

   }

}

}

 

Здесь вначале проверяется, что поле нового телефона PhoneTextBox не пустое и в выпадающем списке выбран человек, для которого будет добавляться телефон. Если это так, то путем вызова метода NewRow() в таблице Phones создается новая строка как объект класса DataRow.

Номер добавляемого телефона сохраняется в столбце Phone. Что же касается столбца ContactId, то в него нужно записать идентификатор строки таблицы Contacts (грубо говоря, порядковый номер человека, которому добавляется телефон). Для этого прежде всего нужно получить фамилию человека из списка FamComboBox с помощью свойства SelectedItem, затем найти этого человека по фамилии в таблице Contacts и получить его id. Поиск данных в таблице осуществляется с помощью метода Select(), где в качестве параметра выступает условие отбора данных. Это условие записывается в строку str и имеет вид: Fam = ‘< фамилия человека> ’. Столбец ContactId новой записи заполняется найденным значением.

Заполненная строка добавляется в таблицу Phones методом Add().

И, наконец, после добавления строки обработчик событий обновляет содержимое базы данных в окне программы методом UpdateContacts().

 

5. 2. 4 Выбор записей в таблицах

Если требуется изменить или удалить данные из базы, то для этого необходимо указать запись, с которой будут производиться эти действия. В данном приложении запись выбирается путем выделения соответствующей строки компонента DataGridView. При этом желательно для обеих таблиц на форме установить свойство MultiSelect в false, чтобы запретить выбор более чем одной строки.

Номер выбранной записи будет сохраняться в переменных: RowId для таблицы Contacts и PhoneId для таблицы Phones. Эти переменные следует добавить в класс главной формы либо визуальным способом (как описано в пункте 2. 2. 1), либо вручную следующим образом:

 

private int RowId;

private int PhoneId;

 

Выбор нужной записи осуществляется в обработчике события RowHeaderMouseClick компонентов DataGridView. Это событие происходит, когда пользователь щелкает мышью в столбце заголовка строки, т. е. выделяет запись. Код данного обработчика для таблицы Contacts представлен ниже:

private void dataGridView1_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)

{

try

{

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

   RowId = e. RowIndex;

   //отобразить фамилию и имя выбранного человека

//в текстовых полях

FamTextBox. Text =  

dataSet1. Contacts. Rows[RowId][" Fam" ]. ToString();

   NameTextBox. Text =

dataSet1. Contacts. Rows[RowId][" Name" ]. ToString();

}

catch (Exception)

  {

}

}

 

Когда пользователь выбирает строку в таблице, этот обработчик вначале определяет индекс строки, которая стала выделенной в результате выполнения этой операции, и записывает его в переменную RowId. Здесь параметр e обработчика содержит параметры, описывающие характеристики нажатия мышью заголовка строки, в том числе и номер строки (свойство RowIndex ). После получения номера выбранной строки выполняется копирование полей фамилии и имени человека из таблицы в соответствующие текстовые поля.

Код аналогичного обработчика для таблицы Phones выглядит следующим образом:

 

private void dataGridView2_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)

{

try

{

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

   PhoneId = e. RowIndex;

   //найти запись с полученным номером в DataSet

   DataRow p = dataSet1. Phones. Rows[PhoneId];

   //отобразить номер телефона этой записи в текстовом поле

   PhoneTextBox. Text = p[" Phone" ]. ToString();

   //получить связанные записи из таблицы Contacts

   DataRow[] fams = p. GetParentRows(dataSet1. Relations [" FK_Contacts_Phones" ]);

   //выбрать фамилию человека (из текущей записи) в списке

   FamComboBox. SelectedItem = fams[0][" Fam" ]. ToString();

}

catch (Exception)

{

}

}

 

Начало обработчика сходно с описанием предыдущего метода: получение номера выделенной строки в переменную PhoneId и копирование номера телефона найденной записи в текстовое поле. Но в данном случае необходимо также отобразить (сделать выбранным) в компоненте ComboBox, фамилию человека, к которому относится этот номер телефона. Т. к. фамилии находятся в таблице Contacts, то нужно получить список записей, связанных с выбранной через отношение FK_Contacts_Phones (см. предыдущее задание на контрольную работу). Делается это с помощью метода GetParentRows(). Далее из полученных «родительских» записей извлекается поле фамилии (“Fam” ), и данная фамилия становится выбранной в выпадающем списке (свойство SelectedItem ).

 

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

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

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

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...