Студопедия КАТЕГОРИИ: АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Проектирование программного кода
Обновление содержимого главного окна приложения Обновлять содержимое главного окна необходимо, когда пользователь производит какие-либо изменения с записями базы данных: добавление, редактирование, удаление записей таблиц, а также при открытии соединения с базой данных в начале работы программы. Добавить в класс новый метод можно либо вручную, либо с использованием визуальных средств разработки. Для этого выбрать в меню 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 не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда... |