Проектирование элементов управления формы FormEmployee 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Проектирование элементов управления формы FormEmployee



Для разработки проекта приложения форма FormEmployee должна содержать элементы управления, в соответствии с видом, приведенном на рисунке 7.4.

Рис. 7.4. Вид экранной формы FormEmployee

 

На данной форме необходимо сформировать элементы управления, приведенные в таблице 7.14.

Таблица 7.14. Элементы управления формы FormEmployee

Элемент контроля Имя Свойство Text/Items Назначение
SplitContainer splitContainerEmployee   Две панели с разделителем
Label labelListEmployee Список сотрудников Надпись
listBox listBoxEmployee   Список сотрудников
Label labelSurname Фамилия Надпись
Label labelName Имя Надпись
Label labelPatronymic Отчество Надпись
Label labelJobRole Должность Надпись
Label labelStatus Статус Надпись
Label labelAccess Уровень доступа Надпись
label labelNetName Сетевое имя Надпись
textBox textBoxNetName   Сетевое имя
textBox textBoxSurname   Фамилия
textBox textBoxName   Имя
textBox textBoxPatronymic   Отчество
comboBox comboBoxJobRole   Должность
comboBox comboBoxStatus Активен, выходной, в отпуске, болеет, не работает, помечен как удаленный Статус
comboBox comboBoxAccess Оператор, старший оператор, начальник смены, администратор, аналитик Уровень доступа
menuItem menuItemAction Действие Пункт меню "Редактировать"
menuItem menuItemUndo Отменить Подпункт меню "Отменить"
menuItem menuItemNew Создать Подпункт меню "Новый"
menuItem menuItemEdit Изменить Подпункт меню "Изменить"
menuItem menuItemSave Сохранить Подпункт меню "Сохранить"
menuItem menuItem Удалить Подпункт меню "Удалить"
menuItem menuItemReport Отчет Пункт меню "Отчет"
menuItem menuItemReport1 По сотруднику Подпункт меню "Отчет по сотруднику"
menuItem menuItemReport2 По всем сотрудникам Подпункт меню "Отчет по всем сотрудникам"

 

Вначале создайте на форме элемент SplitContainer (рисунок 7.5). На панели 1 создайте элементы управления labelListEmployee и listBoxEmployee (рисунок 7.6), а остальные элементы управления, приведенные в таблице 7.14, - на панели 2 (рисунок 7.4).

После создания на форме FormEmployee элементов управления в соответствии с таблицей 7.14 необходимо настроить порядок перехода между ними при нажатии клавиши Tab.

Рис. 7.5. Создание панелей на форме FormEmployee

Рис. 7.6. Формирование элементов управления на панели 1 формы FormEmployee

Для этого необходимо задать последовательные номера свойству TabIndex элементов управления (в разрабатываемой форме это необходимо сделать для элементов управления TextBox и ComboBox) из окна Properties (рисунок 7.7) или вызвать мастер Tab Order Wizard из меню View/Tab Order (рисунок 7.8). Задание последовательности значений свойству TabIndex производится щелчком мыши на элементах управления в заданной последовательности.

Рис. 7.7. Задание свойства TabIndex для элемента контроля

Рис. 7.8. Настройка перехода по элементам управления

Результат настройки порядка перехода между элементами управления при нажатии клавиши Tab приведен на рисунке 7.9.

Для работы с формой необходимо создать методы, которые разрешают только просматривать форму (режим просмотра) и редактировать форму (режим редактирования).

Рис. 7.9. Результат работы мастера Tab Order Wizard

Создадим метод для задания режима просмотра формы DisplayReadOnly. Метод DisplayReadOnly должен быть общедоступным, ничего не должен возвращать и не иметь параметров. Для задания режима просмотра (только для чтения) объекту класса TextBox необходимо свойству ReadOnly присвоить значение true, а для объекта класса comboBox - свойству Enabled значение false. Код метода DisplayReadOnly представлен далее:

public void DisplayReadOnly(){ this.textBoxSurname.ReadOnly = true; this.textBoxName.ReadOnly = true; this.textBoxPatronymic.ReadOnly = true; this.textBoxNetName.ReadOnly = true; this.comboBoxJobRole.Enabled = false; this.comboBoxStatus.Enabled = false; this.comboBoxAccess.Enabled = false;}

Аналогичным образом сформируем метод DisplayEdit, который задает режим редактирования формы:

/// Задание режима редактированияpublic void DisplayEdit(){ this.textBoxSurname.ReadOnly = false; this.textBoxName.ReadOnly = false; this.textBoxPatronymic.ReadOnly = false; this.textBoxNetName.ReadOnly = false; this.comboBoxJobRole.Enabled = true; this.comboBoxStatus.Enabled = true; this.comboBoxAccess.Enabled = true;}

Для управления режимом доступности (только для чтения/редактирование) формы FormEmployee необходимо метод DisplayReadOnly вызывать при первоначальной загрузке формы (событие Load), при сохранении данных по сотруднику и при отмене режима редактирования данных, а метод DisplayEdit - при создании новых данных по сотруднику и при редактировании данных по сотруднику.

Проверьте правильность режима управления доступностью элементов управления формы FormEmployee.

Анализ кодов методов DisplayReadOnly() и DisplayEdit() показывает, что они могут быть объединены в один метод с параметром. Необходимо самостоятельно написать объединенный метод, получив в результате метод DisplayReadOnly(bool readOnly), в котором параматр readOnly определяет режим редактирования: если readOnly равен true, то режим только для просмотра, если равен false, то - редактирование.

В процессе работы приложения необходимо управлять доступом к пунктам меню в соответствии с диаграммой состояний для пунктов меню формы FormEmployee, приведенной на рисунке 7.10.

Рис. 7.10. Диаграмма состояний для активности подпунктов меню "Действие"

 

Диаграмма отображает возможные переходы между тремя режимами: "Просмотр", "Редактирование" и "Создание нового сотрудника".

При выборе в главном меню приложения пункта "Сотрудник" Windows-форма FormEmployee должна перейти в режим "Просмотр", что определяет доступ к пунктам меню "Создать", "Редактировать", "Удалить" и запрет доступа к подпунктам меню "Отменить", "Сохранить".

Если в режиме просмотр выбирается подпункт меню "Удалить", то в результате выполнения данной функции режим Windows-формы FormEmployee не должен измениться, т.е. форма должна остаться в режиме "Просмотр".

Если в режиме просмотр выбирается подпункт меню "Изменить", то Windows-формы FormEmployee должна перейти в режим "Редактирование". Данный режим предполагает, что разрешается доступ к подпунктам меню "Отменить", "Сохранить" и запрещается доступа к подпунктам меню "Создать", "Редактировать", "Удалить".

Аналогичным образом интерпретируются переходы формы FormEmployee из одного режима в другой.

На рисунке 7.10 представлены режимы и переходы для подпунктов главного меню. Аналогичные режимы необходимо соблюдать для контекстного меню и кнопок панели инструментов.

Для управления доступом к пунктам главного меню создайте методы MenuItemEnabled(bool itemEnabled), для контекстного меню - MenuItemContextEnabled(bool itemEnabled) и для кнопок панели управления - StripButtonEnabled(bool itemEnabled). Управление доступностью пунктов главного и контекстного меню осуществляется через свойство Enabled класса ToolStripMenuItem, а кнопок панели управления - через свойство Enabled класса ToolStripButton.

Проверьте правильность режима управления пунктов главного и контекстного меню, а также кнопок панели управления формы FormEmployee.

С учетом того, что установка режимов просмотра и редактирования экранной формы, а также управление доступом к пунктам меню должно выполняться при реализации нескольких функций программы целесообразно для избежания дублирования кода все методы управления режимами объединить в один метод DisplayForm.

private void DisplayForm(bool mode){ DisplayReadOnly(mode); MenuItemEnabled(mode); MenuItemContextEnabled(mode); StripButtonEnabled(mode);}

Первоначальная установка режима "Просмотр" должна проводиться при первоначальной загрузке формы FormEmployee.

Задание на лабораторную работу

  1. Изучить теоретический материал.
  2. Для формы FormEmployee создать требуемые элементы контроля.
  3. Разработать методы для задания режимов "Просмотр", "Редактирование" для элементов контроля.
  4. Разработать методы для задания режимов "Просмотр", "Редактирование" для управления активностью пунктов главного меню формы, контекстного меню и кнопок панели инструментов.
  5. Сформировать обработчик события Load.

Протестировать программу

 

Лабораторная работа №8: Подготовка ADO.Net к работе в приложении

 

Цель работы: Изучить назначение и основные способы создания объектов ADO.NET при помощи Visual Studio IDE

Общие сведения

В платформе.NET определено множество типов (организованных в соответствующие пространства имен) для взаимодействия с локальными и удаленными хранилищами данных. Общее название пространств имен с этими типами - ADO.NET.

ADO.NET - это новая технология доступа к базам данных, специально оптимизированная для нужд построения рассоединенных (disconnected) систем на платформе.NET.

Технология ADO.NET ориентирована на приложения N-tier - архитектуру многоуровневых приложений, которая в настоящее время стала фактическим стандартом для создания распределенных систем.

Основные отличительные особенности ADO.NET:

  • ADO расширяет концепцию объектов-наборов записей в базе данных новым типом DataSet, который представляет локальную копию сразу множества взаимосвязанных таблиц. При помощи объекта DataSet пользователь может локально производить различные операции с содержимым базы данных, будучи физически рассоединен с СУБД, и после завершения этих операций передавать внесенные изменения в базу данных при помощи соответствующего "адаптера данных" (data adapter);
  • в ADO.NET реализована полная поддержка представления данных в XML-совместимых форматах. В ADO.NET сформированные для локальной обработки наборы данных представлены в формате XML (в этом же формате они и передаются с сервера баз данных). Данные в форматах XML очень удобно передавать при помощи обычного HTTP, решает многие проблемы с установлением соединений через брандмауэры;
  • ADO.NET - это библиотека управляемого кода и взаимодействие с ней производится как с обычной сборкой.NET. Типы ADO.NET используют возможности управления памятью CLR и могут использоваться во многих.NET - совместимых языках. При этом обращение к типам ADO.NET (и их членам) производится практически одинаково вне зависимости от того, какой язык используется.

Все типы ADO.NET предназначены для выполнения единого набора задач:

  • установить соединение с хранилищем данных;
  • создать и заполнить данными объект DataSet;
  • отключиться от хранилища данных и вернуть изменения, внесенные в объект DataSet обратно в хранилище данных.

Объект DataSet - это тип данных, представляющий локальный набор таблиц и информацию об отношениях между ними.

DataSet - набор связанных таблиц. На практике можно создать на клиенте объект DataSet, который будет представлять полную копию удаленной базы данных.

       После создания объекта DataSet и его заполнения данными можно программными средствами производить запросы к нему и перемещаться по таблицам, выполнять все операции, как при работе с обычными базами данных: добавлять в таблицы новые записи, удалять и изменять существующие, применять к ним фильтры и т.п. После того как клиент завершит внесение изменений, информация о них будет отправлена в хранилище данных для обработки.

       Создание DataSet осуществляется при помощи управляемого провайдера (managed provider).

Управляемый провайдер - это набор классов, реализующих интерфейсы, определенные в пространстве имен System.Data.

Речь идет об интерфейсах IDbCommand, IDbDataAdapter, IDbConnection и IDataReader (рисунок 8.1).

Рис. 8.1. Взаимодействие клиента с управляемыми провайдерами

 

       В состав ADO.NET включены два управляемых провайдера: провайдер SQL и провайдер OleDb. Провайдер SQL специально оптимизирован под взаимодействие с Microsoft SQL Server версии 7.0 и последующих. Для других источников данных предлагается использовать провайдер OleDb, который можно использовать для обращения к любым хранилищам данных, поддерживающим протокол OLE DB. Следует отметить, что провайдер OleDb работает при помощи "родного" OLE DB и требует возможности взаимодействия при помощи СОМ.

Все возможности ADO.NET заключены в типах, определенных в соответствующих пространствах имен. Краткий обзор главных пространств имен ADO.NET представлен в таблице 8.1.

 

Таблица 8.1. Пространства имен ADO.NET

Пространство имен Описание
System.Data Главное пространство имен ADO.NET. В нем определены типы, представляющие таблицы, столбцы, записи, ограничения и тип - DataSet.
System.Data.Common Определены типы, общие для всех управляемых провайдеров. Многие из них выступают в качестве базовых классов для классов из пространств имен для провайдеров SQL и OleDb
System.Data.OleDb В этом пространстве имен определены типы для установления соединений с OLE DB-совместимыми источниками данных, выполнения к ним SQL-запросов и заполнения данными объектов DataSet.
System.Data.SqlCIient В этом пространстве имен определены типы, которые составляют управляемый провайдер SQL.
System.Data.SqlTypes Представляют собой "родные" типы данных Microsoft SQL Server.

 

       Все пространства имен ADO.NET расположены в одной сборке - System.Data.dll. Это означает, что в любом проекте, использующем ADO.NET, мы должны добавить ссылку на эту сборку.

       В любом приложении ADO.NET необходимо использовать, по крайней мере, одно пространство имен - System.Data. Кроме того, практически во всех ситуациях требуется использовать либо пространство имен System.Data.OleDb или System.Data.SqlClient - для установления соединения с источником данных.

       Типы пространства имен System.Data предназначены для представления данных, полученных из источника (но не для установления соединения непосредственно с источником).

       В основном эти типы представляют собой объектные представления примитивов для работы с базами данных - таблицами, строками, столбцами, ограничениями и т. п.      Наиболее часто используемые типы System.Data представлены в таблице 8.2.

 

Таблица 8.2. Типы пространства имен System.Data

Тип Назначение
DataColumnCollection, DataColumn DataColumn представляет один столбец в объекте DataTable, DataColumnCollection - все столбцы
ConstraintCollection, Constraint Constraint - объектно-ориентированная оболочка вокруг ограничения (например, внешнего ключа или уникальности), наложенного на один или несколько DataColumn, ConstraintCollection - все ограничения в объекте DataTable
DataRowCollection, Data Row DataRow представляет единственную строку в DataTable, DataRowCollection - все строки в DataTable
DataRowView, Data View DataRowView позволяет создавать настроенное представление единственной строки, DataView - созданное программным образом представление объекта DataTable, которое может быть использовано для сортировки, фильтрации, поиска, редактирования и перемещения
DataSet Объект, создаваемый в оперативной памяти на клиентском компьютере. DataSet состоит из множества объектов DataTable и информации об отношениях между ними
ForeignKeyConstraint, UniqueConstraint ForeignKeyConstraint представляет ограничение, налагаемое на набор столбцов в таблицах, связанных отношениями первичный - внешний ключ. UniqueConstraint - ограничение, при помощи которого гарантируется, что в столбце не будет повторяющихся записей
DataRelationCollection, DataRelation, DataTableCollection, DataTable Тип DataRelationCollection представляет набор всех отношений (то есть объектов DataRelation) между таблицами в DataSet. Тип DataTableCollection представляет набор всех таблиц (объектов DataTable) в DataSet

 

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

Такой метод работы с данными становится непрактичным, поскольку подобные приложения трудно масштабируются. Например, такая прикладная система может работать достаточно быстро и эффективно при наличии 8-10 пользователей, но она может стать полностью неработоспособной, если с ней начнут работать 100, 200 и более пользователей. Каждое открываемое соединение с базой данных "потребляет" достаточно много системных ресурсов сервера, они становятся занятыми поддержкой и обслуживанием открытых соединений, их не остается на процессы непосредственной обработки данных.

При разработке прикладных систем в сети Интернет (Web-приложения) необходимо добиваться максимальной масштабируемости. Система должна работать одинаково эффективно как с малым, так и с большим числом пользователей.

По этой причине, в ADO.NET используется модель работы пользователя в отрыве от источника данных. Приложения подключаются к базе данных только па небольшой промежуток времени. Соединение устанавливается только тогда, когда клиент удаленного компьютера запрашивает на сервере данные. После того, как сервер подготовил необходимый набор данных, сформировал и отправил их клиенту в виде WEB-страницы, связь приложения с сервером сразу же обрывается, и клиент просматривает полученную информацию уже не в связи с сервером. При работе в сети Интернет нет необходимости поддерживать постоянную "жизнеспособность" открытых соединений, поскольку неизвестно, будет ли конкретный клиент вообще далее взаимодействовать с источником данных. В таком случае целесообразнее сразу освобождать занимаемые серверные ресурсы, что обеспечит обслуживание большего количества пользователей. Модели доступа к данным представлена на рисунке 8.2.

 

Рис. 8.2. Модель доступа к данным в ADO.NET

 

В объектной модели ADO.NET можно выделить несколько уровней.

       Уровень данных. Это по сути дела базовый уровень, на котором располагаются сами данные (например, таблицы базы данных MS SQL Server). На данном уровне обеспечивается физическое хранение информации на магнитных носителях и манипуляция с данными на уровне исходных таблиц (выборка, сортировка, добавление, удаление, обновление и т. п.).

       Уровень бизнес-логики. Это набор объектов, определяющих, с какой базой данных предстоит установить связь и какие действия необходимо будет выполнить с содержащейся в ней информацией.

1. Для установления связи с базами данных используется объект DataConnection.

2. Для хранения команд, выполняющих какие либо действия над данными, используется объект DataAdapter.

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

Уровень приложения. Это набор объектов, позволяющих хранить и отображать данные на компьютере конечного пользователя. Для хранения информации используется уже знакомый нам объект DataSet, а для отображения данных имеется довольно большой набор элементов управления (DataGrid, TextBox, ComboBox, Label и т. д.).

В Visual Studio.Net можно вести разработку двух типов приложений. В первую очередь это традиционные Windows-приложения (на основе Windows-форм), которые реализованы в виде ехе-файлов, запускаемых на компьютере пользователя. Ну и конечно, Web-приложения (на основе Web-форм), которые работают в оболочке браузера. Как видно из рисунка 8.2, для хранения данных на уровне обоих типов приложений используется объект DataSet.

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

В ADO.NET для манипуляции с данными могут использоваться команды, реализованные в виде SQL-запросов или хранимых процедур (DataCommand). Например, если необходимо получить некий набор информации базы данных, вы формируете команду SELECT или вызываете хранимую процедуру по ее имени.

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

  • открыть соединение (connection) с базой данных;
  • вызвать на исполнение метод или команду, указав ей в качестве параметра текст SQL-запроса или имя хранимой процедуры;
  • закрыть соединение с базой данных.

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

Когда команда вызывается на исполнение, она возвращает либо данные, либо код ошибки. Если в команде содержался SQL-запрос на выборку - SELECT, то команда может вернуть набор данных. Вы можете выбрать из базы данных только определенные строки и колонки, используя объект DataReader, который работает достаточно быстро, поскольку использует курсоры read-only, forward-only.

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

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

Команды работы с данными могут содержать параметры, т. е. могут использоваться параметризированные запросы, как, например, следующий запрос:



Поделиться:


Последнее изменение этой страницы: 2021-04-04; просмотров: 167; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.17.28.48 (0.058 с.)