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

3.2.2. Добавление нового контакта

Добавление нового контакта происходит тогда, когда пользователь щелкает кнопку До­бавить, расположенную в верхней части главного окна приложения (рис. 8.3). Предва­рительно пользователь должен ввести имя и фамилию человека в поля Имя и Фамилия соответственно.

Для этой кнопки необходимо подготовить следую­щий программный код:

private void AddContactButton_Click(object sender, EventArgs e)

{

//если текстовые поля не пусты,

if (FamTextBox.Text != "" && NameTextBox.Text != "")

{

//то создать новую запись в таблице Contacts,

DataRow row = dataSet11.Contacts.NewRow();

//заполнить ее столбцы

row["Fam"] = FamTextBox.Text;

row["Name"] = NameTextBox.Text;

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

dataSet11.Contacts.Rows.Add(row);

//обновить содержимое главного окна

UpdateContacts();

}

}

Здесь нужно убедиться в том, что пользователь ввел как имя, так и фамилию. Если поле fnTextBox или lnTextBox пустое, обработчик события завершает свою работу без выполнения других дополнительных действий. В том случае, когда пользователь ввел все необходимые данные, обработчик события создает новую строку в таблице Contacts. Для этого используется метод NewRow(). На следующем этапе введенные строки имени и фамилии записываются в соответст­вующие столбцы строки. Подготовленная таким способом строка добавляется в таблицу.

Далее обработчик события последовательно вызывает метод с именами UpdateContacts(), который предназначен для обновления содержимого формы приложения. Этот метод описан далее.

3.2.3. Добавление номера телефона

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

private void AddPhoneButton_Click(object sender, EventArgs e)

{

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

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

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

{

try

{

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

DataRow row = dataSet11.Phones.NewRow();

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

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

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

dataSet11.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().