|
Стандартные диалоговые панели общего назначения.Исходя из иерархии классов в пространстве имен System.Windows.Forms.Controls (рис. 6.), можно отметить, что в состав класса CommonDialog входит восемь компонентов, реализующих стандартные диалоговые панели, используемые Windows-приложениями. Эти компоненты расположены в панели компонентов на странице Dialogs. После размещения изображения компонента, соответствующего диалоговой панели, в форму, необходимо связать отображение этой панели.
Рис. 6. Иерархия классов в пространстве имен System.Windows.Forms.Controls.
OpenFileDialog Позволяет выбрать открываемый файл по заданному шаблону. Свойство FileName задает название файла, которое будет находиться в поле "Имя файла:" при появлении диалога. Свойство Filter задает ограничение файлов, которые могут быть выбраны для открытия — в окне будут показываться только файлы с заданным расширением. Через вертикальную разделительную линию можно задать смену типа расширения, отображаемого в выпадающем списке "Тип файлов". Здесь введено Text Files (*.txt)|*.txt|All Files(*.*)|*.* что означает обзор либо текстовых файлов, либо всех. Свойство InitialDirectory позволяет задать директорию, откуда будет начинаться обзор. Если это свойство не установлено, исходной директорией будет рабочий стол. SaveFileDialog Позволяет выбрать имя файла, в котором будет сохраняться информация. Свойства аналогичны OpenFileDialog. ColorDialog Диалоговое окно ColorDialog содержит список цветов, которые могут быть применены к тексту, но предлагаемый список ограничен. Более интересной представляется возможность назначать ользовательский цвет, который может быть определен в большом диапазоне (рис. 7): Рис. 7. Диалоговое окно.
Комп'ютерний практикум №3. Класс DataSet. Таблицы и поля (объекты DataTable и DataColumn). Объекты DataRelation. Строки (объект DataRow). Схемы XML. Работа с XML. Цель: изучение правил работы с набором классов, которые представляют разъединенную среду, научиться создавать XML-файлы и считывать с них данные и схему. Ход работы (первой части лабораторного занятия). I Работа с объектами DataSet, DataView (пример, UseDataSet).
MessageBox.Show(t.Rows[…][…].ToString());
II Задание Expression в таблице, используя визуальные средства разработки. 1. Открыть приложение UseDataSet.
4. Задать таблицам следующие структуры, указать ключи, связи и в свойствах полей соответствующие значения Expression:
5.1. Описание структуры таблицы «Order»:
5.2. Описание структуры таблицы «OrderLines»:
5. Разместить на форме, на третьей вкладке UsingExpression два элемента dataGridView. 6. Программно на кнопке «Создать таблицу» задать связь с таблицами: MyData md = new MyData();
dataGridView2.DataSource = md; dataGridView2.DataMember = "Order";
dataGridView3.DataSource = md; dataGridView3.DataMember = "OrderLines"; Проверить выполнение заданных выражений введением данных.
Теоретические сведения: 1 Класс DataSet. Обобщенная схема модели автономных объектов представлена на рис. 1
Рис. 1. Классы автономных объектов Класс DataSet является ядром автономного режима доступа к данным в ADO.NET. Доступен из пространства имен System.Data.DataSet, находящегося над всеми поставщиками данных, что делает его независимым: · представляет собой отображение используемой базы данных, перенесенное на машину пользователя. · можно загрузить данные из любого источника (SQL Server, Access или XML-файл и др.) · содержимым можно манипулировать независимо от источника данных.
DataSet состоит из объектов типа: · DataTable – объекты, описывающие все таблицы, которые хранятся в DataSet; · DataRelation – объекты, описывающие связи между таблицами.
Объекты типа DataSet можно создавать одним из четырех способов: · программным путем; · используя графическую утилиту из пакета Microsoft Visual Studio.NET; · генерировать при создании объекта DataAdapter; · загружать структуру и данные в DataSet из XML-файлов.
В дальнейшем, будут рассматриваться способы создания объектов только программным путем. Объект DataSet создается следующим образом: DataSet d = new DataSet(); а) состоит из набора таблиц (типа DataTable): с войство Tables объекта DataSet возвращает объект типа DataTableCollection. Для того, чтобы добавить таблицу в коллекцию, используется метод Add(): d.Tables.Add (new DataTable()); В качестве параметров метода передают либо имя нового DataTable коллекции, либо вызывают этот метод без параметров, тогда имя нового объекта будет Table№. Объект типа DataTable может принадлежать только одному объекту типа DataSet, иначе будет вызвано исключение ArgumentExeption. При попытке добавить таблицу с дублирующимся именем, произойдет исключение DublicateNameExeption. б) состоит из набора связей (типа DataRelation) между двумя таблицами посредством объектов DataColumn: с войство Relations объекта DataSet возвращает объект типа DataRelationCollection. Класс DataTable (таблицы) Объект типа DataTable представляет собой таблицу базы данных. Такой объект может быть создан путем запроса к базе данных или программно, как показано далее: //создание таблицы DataTable t = new DataTable(); //создание полей (колонок) с помощью конструктора DataColumn dc = new DataColumn(“height”, System.Type.GetType(“System.Int32”)); DataColumn dc1 = new DataColumn(“name”, System.Type.GetType(“System.String”)); //добавление этих полей в таблицу t.Columns.Add(dc); t.Columns.Add(dc1); Для получения совокупности столбцов объект DataTable имеет свойство Columns, возвращающее DataColumnCollection, которое в свою очередь состоит из объектов типа DataColumn. Каждый объект DataColumn представляет собой отдельный столбец таблицы, из которого можно получить любую запись. Объект DataTable содержит ссылки на объекты, которые описывают структуру таблицы, и ее данные. Для этой цели объект типа DataTable состоит из нескольких коллекций, приведенных в табл.1. Таблица 1. Коллекции объекта типа DataTable.
Различия между двумя схожими методами объекта класса DataTable приведены в таблице 2. Таблица 2. Описание методов Clone() и Copy().
1.1.1 Столбцы (объект Columns). Объект типа DataColumn - это объект, содержащий информацию о колонке таблицы, и является основой для создания структуры объекта типа DataTable. Конструктор класса DataColumn может принимать до четырех параметров. Основные свойства класса DataColumn представлены в таблице 3. Таблица 3. Свойства класса DataColumn
1.1.2 Строки (объект Row) Свойство Rows объекта DataTable возвращает совокупность всех строк таблицы — DataRowCollection. Это свойство следует применять для того, чтобы пользоваться результатами запросов к базе данных. В ADO.NET нет необходимости в итерационном обходе DataSet для получения данных. Вы можете обращаться к записям таблицы как к элементам простого массива. Это значительно упрощает процесс доступа к элементам базы. Добавление данных. Осуществляется использованием метода NewRow(). Он не добавляет новую строку, а лишь возвращает ссылку на объект типа DataRow, который имеет ту же структуру, что и объект таблицы, у которой этот метод был вызван. // получение прототипа строки DataRow dr = t.NewRow();
Добавление строки возможно с помощью метода Add(). Метод принимает параметры в виде массива элементов типа object. В качестве значений этот массив содержит поля новой строки. Необходимо помнить, что при добавлении строки таким образом, вместо полей, являющихся счетчиками, следует указывать значение null. //задание значений строке dr["height"] = 180; dr["name"] = "Иван Иванович"; //добавить строку к таблице t.Rows.Add(dr);
Т.е. наполнение DataTable данными осуществляется последовательностью действий:
// задание второй строки dr = d.NewRow(); dr["height"] = 175; dr["name"] = "Петр Петрович"; t.Rows.Add(dr);
Заполнение полей. Для доступа к полям строки используются индексаторы (заключенные в [ ]). При этом, можно использовать как имя соответствующей колонки, так и ее порядковый номер. // выберем для работы строку 3 DataRow dr = t.Rows[2]; dr["height"] = 10; dr["name"] = "Vasya";
// либо можно написать по другому t.Rows[2]["height"] = 10; //или t.Rows[2][0] = 10; Изменение данных. Изменять данные можно непосредственно обращаясь к ячейке, но это может затрагивать ограничения, наложенные на таблицу. То есть при изменении одного из полей в таблице происходит проверка на выполнение всех условий, наложенных на это значение. И если одно их условий не выполняется, то генерируется исключение. Существует специальный механизм, позволяющий отключить событие и сообщения, связанные с редактирование данных, на момент редактирования. В таблице 4. приведем три метода класса DataRow, реализующие этот механизм. Таблица 4. Методы класса DataRow, позволяющие отключить сообщения.
Состояния строки. Метод Delete() объекта DataRow – не удаляет строку из таблицы явно, а помечает на удаление. Это достигается путем изменения состояния строки. Перечень значений свойства RowState приведен в таблице 5. Таблица 5. Значения свойства RowState.
Кроме свойства RowState строка хранит также информацию о своей версии. Версию строки можно проверить с помощью метода HasVersion. Этот метод принимает в качестве параметров одно из значений перечисляемого типа DataRowVersion и возвращает true, если версии совпадают. В табл. 6 представлена структура перечисляемого типа DataRowVersion Таблица 6. Структура перечисляемого типа DataRowVersion
В табл. 7 представлены варианты изменения значений типа DataRowVersion
Таблица 7 принципы изменения значений DataRowVersion.
Обработка событий При изменении данных можно обрабатывать ряд специальных событий, которые возникают при модификации данных в таблице. Набор событий представлен в табл. 8 Таблица 8. Набор событий, возникающий при изменении данных.
![]() ![]() ЧТО ТАКОЕ УВЕРЕННОЕ ПОВЕДЕНИЕ В МЕЖЛИЧНОСТНЫХ ОТНОШЕНИЯХ? Исторически существует три основных модели различий, существующих между... ![]() Что вызывает тренды на фондовых и товарных рынках Объяснение теории грузового поезда Первые 17 лет моих рыночных исследований сводились к попыткам вычислить, когда этот... ![]() Что способствует осуществлению желаний? Стопроцентная, непоколебимая уверенность в своем... ![]() Система охраняемых территорий в США Изучение особо охраняемых природных территорий(ООПТ) США представляет особый интерес по многим причинам... Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:
|