Студопедия

КАТЕГОРИИ:

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

Проектирование программного кода




Обновление содержимого главного окна приложения

Обновлять содержимое главного окна необходимо, когда пользователь производит какие-либо изменения с записями базы данных: добавление, редактирование, удаление записей таблиц, а также при открытии соединения с базой данных в начале работы программы.

Добавить в класс новый метод можно либо вручную, либо с использованием визуальных средств разработки. Для этого выбрать в меню View пункт Class View. В результате откроется окно, где можно просматривать список всех классов, описанных в пространстве имен приложения. Щелкнув правой кнопкой на класс главной формы, следует выбрать в контекстном меню пункт View Class Diagram. После этого в рабочей области откроется файл диаграммы классов, где можно создавать новые классы, интерфейсы, делегаты, перечисления и т.п., а также добавлять в существующие классы методы, поля, свойства, события и т.д.

Чтобы добавить в класс метод, нужно щелкнуть правой кнопкой в заголовке класса формы и выбрать в контекстном меню пункт Add->Method. После этого в окне Properties можно будет установить свойства для добавляемого метода: его имя, вид доступа, тип возврата и т.д.

Для обновления содержимого формы следует добавить в класс формы метод UpdateContacts(). Тип возврата метода – void, вид доступа – private, параметров нет. Программный код метода следующий:

Private void UpdateContacts()

{

//обновить содержимое таблиц базы данных

phonesTableAdapter.Update(dataSet11);

oleDbDataAdapter1.Update(dataSet11);

//очистить DataSet

dataSet11.Clear();

//заполнить таблицы в объекте DataSet

oleDbDataAdapter1.Fill(dataSet11.Contacts);

phonesTableAdapter.Fill(dataSet11.Phones);

//очистить содерижмое списка фамилий

FamComboBox.Items.Clear();

//заполнить список фамилий значениями из таблицы

foreach (DataRow row in dataSet11.Contacts.Rows)

   FamComboBox.Items.Add(row["Fam"]);

//в списке фамилий - ни одна фамилия не выделена

FamComboBox.Text = "";

}

Прежде всего, необходимо сохранить сделанные в программе изменения непосредственно в базу данных. Делается это с помощью метода Update(), применяемого к адаптерам таблиц. Далее содержимое объекта DataSet очищается (Clear()) и заполняется заново методом Fill().

Выпадающий список FamComboBox содержит список фамилий людей. При изменении содержимого базы данных его также нужно обновить. Сначала его строки методом Clear() очищаются, а затем заполняются заново фамилиями из обновленной таблицы (метод Add()). Цикл foreach используется для просмотра всех записей таблицы.

Так как обновление данных должно выполняться и при запуске программы, то содержимое обработчика события FormLoad изменится следующим образом:

 

Private void Form1_Load(object sender, EventArgs e)

{

oleDbConnection1.Open(); //открыть соединение

UpdateContacts();   //обновить главное окно

}

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

Добавление нового контакта происходит тогда, когда пользователь щелкает кнопку До­бавить,расположенную в верхней части главного окна приложения (рис. 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(), который предназначен для обновления содержимого формы приложения.Этот метод описан далее.

 

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

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

 

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

 

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

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

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

 

private int RowId;

private int PhoneId;

 

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

 










Последнее изменение этой страницы: 2018-06-01; просмотров: 216.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...