Порядок выполнения работы

Практическое занятие № 20

Создание простых ленточных форм для работы с данными
Практическое занятие № 21


Создание сложных ленточных форм для работы с данными

Практическое занятие № 22

Создание табличных форм для работы с данными

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

 

 

ТЕОРЕТИЧЕСКИЙ МАТЕРИАЛ

 

Среда программирования Visual Studio представляет максимально широкие возможности по созданию приложений взаимодействующих с базами данных. Данное взаимодействие осуществляется с использованием технологии ADO.NET. Модель доступа к данным приведена на Рисунок 1. Следует отметить, что база данных может быть использована несколькими приложениями. Более подробно данную модель доступа мы будем рассматривать в рамках практических занятий.

 

 

Рисунок 1. Взаимодействие приложения с БД

 

Порядок выполнения работы

 

1. Разместите в каталоге «D:\PersDB» файлы БД - «personal.mdf» и «personal_log.ldf», созданные на практическом занятии № 6.

 

Подключите БД к серверу.

 

 

2. Запустите Visual Studio: Пуск\Все программы\Visual Studio 2008\Visual Studio 2008.

 

Создайте новый проект Windows Forms Application. Сохраните его в папку \PZ11 на диске под именем PZ11 (Рисунок 2).

 

Рисунок 2. Создание нового проекта

 

 

На экране должна появиться «заготовка» для приложения (Рисунок 3).

 


 

 

Рисунок 3

3. Прежде всего, необходимо подключить к приложению источник данных.

 

Выберете меню Project/Add New Data Source… (Рисунок 4).

 

Рисунок 4

 

4. После выбора пункта меню, появляется следующее окно диалога (Рисунок 5).

 

 

 

Рисунок 5

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

 

· Database –База данных;

 

· Service –Служба,это некоторый сервис,предоставляющий данные.Чащевсего это Web-сервис;

 

· Object –Объект для выбора объекта,который будет генерировать данные иобъекты для работы с ними.

 

В нашем случае необходимо выбрать пункт «Database» («База данных»). В следующем окне мастера создания набора данных выберете тип модели БД – «Dataset» (Рисунок 6). Появляется окно выбора соединения с данными (Рисунок 7).

 

 

 

 

Рисунок 6                                                                                    Рисунок 7

 

Выберете «New Connection…» - для выбора настроек соединения с нашей БД под управлением СУБД MS SQL Server. В появившемся диалоговом окне выберем источник данных: Microsoft SQL Server и провайдер данных:.NET Framework Data Provider for SQL Server (Рисунок 8).

 

Рисунок 8

 

 

Установите настройки соединения согласно экрану с Рисунок 9. Выберете базу данных для подключения PERSONAL.

 

6


 

 

Рисунок 9

 

 

Нажмите кнопку «Test Connection». Если все настроено верно, появится сообщение:

 

 

Рисунок 10

 

 

Сохраните конфигурацию источника данных - нажмите кнопу «Ок».

 

Перейдите к следующему шагу настроек – нажмите «Next>» (Рисунок 11).

 

 

7


 

 

Рисунок 11

Укажите необходимость создания конфигурационного файла, так как подключение

 

к БД может меняться и чтобы не перекомпилировать программу при смене подключения, достаточно изменить конфигурационный файл (Рисунок 12). Доступ к параметрам конфигурационного файла приложения возможен через пункт меню: Project / PZ11 Properties… В открывшейся форме необходимо перейти в раздел

 

Settings.

 

Сам файл находится в папке, где расположен.exe файл проекта и имеет имя для нашего примера: \ PZ11 \bin\Debug\ PZ11. exe.config.

 

8


 

 

Рисунок 12

 

 

Последний шаг диалога – выбор тех таблиц или иных объектов базы данных, которые необходимы в данном наборе данных. Окно выбора представлено на Рисунок 13. Выберете все таблицы нашей БД и нажмите «Finish» - в нашем проекте будет создан набор данных PERSONALDataSet.

 


 

 

Рисунок 13

 

 

В окне «Solution Explorer» дважды щелкните по созданному нами набору данных PERSONALDataSet.xsd – откроется окно с графическим представлением созданного набора данных (Рисунок 14). В данном окне можно изменить структуру данных и просмотреть содержимое таблиц БД.

 

 


 

 

Рисунок 14

 

5. Если вы измените структуру БД в MS SQL Server, изменения автоматически не отобразятся в наборе данных. После изменений структуры БД, необходимо актуализировать наш набор данных PERSONALDataSet. В окне Data Sources

 

выберите кнопку Configure Data Source with Wizard (Рисунок 15).

 

 

Рисунок 15

 

 

Откроется мастер конфигурации набора данных. Подключите в наборе данных новые поля и таблицы БД (Рисунок 16).

 


 

 

Рисунок 16

 

 

После нажатия на кнопку Finish, схема данных для нашего PERSONALDataSet изменится.

 

6. Для отображения информации на элементах управления Windows Forms необходимо осуществить их заполнение из соответствующих столбцов и строк таблиц DataSet. Это можно сделать путем написания специального кода, который предназначен для заполнения соответствующих элементов управления или использовать механизм привязки данных к пользовательским интерфейсам.NET.

 

Windows Forms позволяют отображать данные путем привязки их элементов управления к источникам данных. Привязка данных обычно используется для отображения результатов поиска, детализации сводок, генерации отчетов и ввода данных.

 


Привязка элементов интерфейса пользователя к данным осуществляется с помощью свойства DataBindings:

 

 

Рисунок 17

 

Существует два типа привязки данных: простая и сложная. В случае простой привязки данных элемент управления привязывается к отдельному элементу данных. Простая привязка, в основном, используется с такими элементами управления, как поле ввода (TextBox) и надпись (Lable). При сложной привязке данных элемент управления привязывается более чем к одному элементу данных - обычно к одному или нескольким столбцам в нескольких строках результирующего набора строк. К элементам управления, поддерживающим сложную привязку данных, относятся список (ListBox), выпадающий список (ComboBox), список данных (DataList) и табличный элемент (DataGridView).

 

 

7. Отобразим данные о сотрудниках в нашем приложении. Перейдите на окно формы

 

Form1 (Form1.cs [Design]). Откройте источник данных PERSONALDataSet. Выберете таблицу PERSONAL и форму представления данных DataGidView (табличное представление данных):

 

Рисунок 18

 


Удерживая левую кнопку мыши, переместите таблицу PERSONAL из окна Data Sources на форму приложения. В результате получится форма Рисунок 19.

 

 

Рисунок 19

 

 

На рисунке видно, что появился компонент BindingSource и компонент TableAdapter, работающие с таблицей «PERSONAL». Обратите внимание, что в design-time или в процессе разработки данные из таблицы не отображаются.

 

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

 

 

Важно: Не забывайте нажимать кнопку «Сохранить» для сохранения изменений в БД!!!

 

14


8. Самое время запустить наше приложение на исполнение (F5) и убедиться, что мы все сделали верно – на экране появится наша форма с таблицей (таблица будет отображать данные из БД, Рисунок 20).

 

Рисунок 20

Обратите внимание – данные в таблице можно изменять, удалять строки и

 

добавлять новые. Предоставлять пользователю такие возможности без контроля – не есть хорошая идея. Закройте приложение и откройте окно с макетом Form1. В настройках DataGridView выключите все его возможности по редактированию данных: «Enable Adding» («Включить добавление»), «Enable Editing» («Включить редактирование»), «Enable Deleting» («Включить удаление»); возможность изменения последовательности столбцов: «Enable Column Reordering» – см. Рисунок

 

21.

 

Рисунок 21

 

 


Таким образом, мы запретим пользователю изменять данные в БД напрямую из компонента DataGridView. Данные доступны будут только для просмотра. Для изменения данных у нас будут предусмотрены другие элементы интерфейса.

 

В окне настроек DataGridView выберете «Edit Columns…». Для столбца Num таблицы укажите соответствующий ему заголовок на русском языке – свойство HeaderText (Рисунок 22). Аналогично поступите со столбцом LNAME. Остальные столбцы удалите из DataGridView (кнопка «Remove» - Рисунок 22).

 

Рисунок 22

 

 

Выделите компонент DataGridView, затем в окне свойств (Properties) установите для него следующие значения свойств (Рисунок 23):

 

· SelectionMode = FullRowSelect (позволяет выделять не ячейку,а всю строкутаблицы);

 

· MultiSelect  = False (запретим пользователю выделять несколько строк).

 


 

 

Рисунок 23

 

 

Повторно запустим наше приложение на исполнение. Внешний вид окна должен выглядеть как на Рисунок 24.

 

 

Рисунок 24

 

 

9. Добавьте на форму Form1 главное меню с пунктами Справочники (Отделы, Должности, Образование), Выход – компонент menuStrip (группа Menus & Toolbars, Рисунок 25).

 


 

Рисунок 25

 

Нажмите два раза мышкой на пункте меню «Выход» и в обработчике события Click пропишите, вызов метода Close():

 

Метод Close может вызываться не только в данном меню, но и когда пользователь нажмет на форме [х]. Запрограммируем для события FormClosing у Form1 вызов диалога, подтверждающего закрытие программы:

 


10. Перейдите на окно формы Form1 (Form1.cs [Design]). Откройте источник данных

 

PERSONALDataSet в окне Data Sources. Выберете таблицу PERSONAL и форму представления данных Details (каждое поле в отдельном компоненте):

 

 

Рисунок 26

 

И удерживая левую кнопку мыши, переместите таблицу PERSONAL из окна Data Sources на форму приложения. В результате получится форма:

 

 

Рисунок 27

 


Для каждой метки поля данных укажите соответствующее наименование на русском языке (для компонента Label за выводимый на экран текст отвечает свойство - Text). Поле внешнего ключа DEP_CODE удалите вместе с меткой – это служебная информация, она не должна быть доступна пользователю.

 

Запустите программу на исполнение (Рисунок 28). При изменении текущей записи в таблице DataGridView, поля данных формы автоматически заполняются соответствующей информацией о выбранном сотруднике. Все поля данных доступны для редактирования.

 

 

Рисунок 28

 

11. Поле «Адрес» (ADRES) может содержать длинную строку символов, которая не поместится в поле данных. Выделите соответствующее поле и в его настройках включите режим отображения данных в несколько строк - MultiLine (Рисунок 29). Само поле данных растяните вниз для размещения в нем многострочной информации.

 

 


 

Рисунок 29

 

 

12. Для поля MARITAL возможны следующие значения: «женат», «не женат», «замужем», «не замужем». Для удобства пользователя организуем ввод этих данных с помощью выпадающего списка. Откройте окно формы. В окне DataSource для поля MARITAL выберете способ отображения «ComboBox» - выпадающий список (Рисунок 30).

 

 

Рисунок 30

 

Переместите поле MARITAL из окна DataSource на окно формы (прежнее поле удалите с формы).

 

Введем список возможных значений поля – за это отвечает свойство Items выпадающего списка в окне Properties (Рисунок 31).

 


 

 

Рисунок 31

 

 

Запустите программу на исполнение. Работа выпадающего списка представлена на Рисунок 32.

 

 

Рисунок 32

 

 


13. Для pERSONALBindingNavigator измените на русский язык текст всех всплывающих подсказок через свойство ToolTipText кнопки. Например, для кнопки с изображением дискеты pERSONALBindingNavigatorSaveItem укажите текст «Сохранить данные».

 

И далее по аналогии для остальных кнопок pERSONALBindingNavigator.

 

Результат см. Рисунок 33.

 

Рисунок 33

 

14. До данного момента мы использовали автоматическую привязку данных к элементам интерфейса пользователя. Однако привязку данных можно осуществлять и вручную. За это отвечает группа свойств DataBindings.

 

Добавим отображение и редактирование данных для поля внешнего ключа DEP_CODE (внешний ключ для связи с таблицей отделов DEPARTMET). Разместите на форме объект ComboBox из окна Toolbox. Установите свойство DropDownStyle = DropDownList для размещенного ComboBox. Данная настройка запрещает пользователю в этом поле вводить произвольные данные с клавиатуры – будет доступен только выбор значений из падающего списка.

 

 


Выпадающий список должен отображать данные из таблицы DEPARTMET. Для этого в свойстве DataSource выберете соответствующую таблицу (Рисунок 34).

 

 

Рисунок 34

В списке должны отображаться наименования отделов – для этого в свойстве

 

DisplayMember укажите поле NAME таблицы DEPARTMENT (Рисунок 35).

 

Укажем поле первичного ключа таблицы DEPARTMENT, которое будет выбираться при выборе соответствующего имени отдела в выпадающем списке. За это отвечает свойство ValueMember (Рисунок 35). Присвоим ему значение: ValueMember = ID (поле первичного ключа DEPARTMENT).

 

И последнее – нужно указать в какое поле таблицы PERSONAL необходимо сохранять выбранное значение первичного ключа таблицы DEPARTMENT. За это отвечает свойство SelectValue Рисунок 35). Значением свойства должно быть поле внешнего ключа таблицы PERSONAL для связи с таблицей DEPARTMENT (в нашем случае это –

 

DEP_CODE).

 

 


 

 

Рисунок 35

Результат работы добавленного списка представлен на Рисунок 36.

 

Рисунок 36

 

 


В выпадающем списке отображаются имена отделов из таблицы DEPARTMENT. После выбора отдела его код (ID) будет записан в поле внешнего ключа таблицы PERSONAL (поле DEP_CODE). При отображении данных о сотруднике в выпадающем списке будет автоматически выбираться имя отдела соответствующее коду, хранимому в поле

 

DEP_CODE.

 

15. Теперь необходимо добавить возможность редактировать данные справочника отделов организации – таблицы DEPARTMENT.

 

Создадим новую форму в нашем приложении – выполните команду: PROJECT/Add Windows Form … (Рисунок37).Выберете в окне диалога Windows Form и нажмитекнопку Add.

 

Рисунок 37

 

 

На эране появится новая закладка с заготовкой созданной формы – Form2. Из окна Data Sources перетащите на данное окно таблицу DEPARTMENT в представлении DataGridView (Рисунок 38).

 

 


 

Рисунок 38

 

Оформите заголовки столбцов DataGridView, заголовок окна формы, надписи и всплывающие подсказки для bindingNavigator (Рисунок 39).

 

 

Рисунок 39

 

Перейдите на закладку с основной формой приложения (Form1). Выберете на форме пункт меню Справочники/Отделы и дважды щелкните по нему для редактирования кода события выбора пользователем данного пункта меню:

 

 


 

16. Сохраните, запустите проект и проверьте его работу (Рисунок 40).

 

Рисунок 40

 

























Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: