Пред.
След.
Макеты страниц
Распознанный текст, спецсимволы и формулы могут содержать ошибки, поэтому с корректным вариантом рекомендуем ознакомиться на отсканированных изображениях учебника выше Также, советуем воспользоваться поиском по сайту, мы уверены, что вы сможете найти больше информации по нужной Вам тематике ДЛЯ СТУДЕНТОВ И ШКОЛЬНИКОВ ЕСТЬ
ZADANIA.TO
4.4.4. Объект DataViewВ объект DataSet можно загрузить большое количество данных и затем, отсоединившись от источника, использовать их по частям. Объект DataView предназначен для работы с упорядоченной определенным образом частью данных, загруженных в DataSet. Подобно всем объектам ADO .NET, с ним можно работать как при помощи визуальных средств среды, так и программно.
Фильтрация данных
Создадим новое Windows-приложение. На форму добавим соединение с SQL-базой данных и два компонента DataGridView. Первый компонент настроим на отображение таблицы «Туристы». Для второго компонента сформируем следующий код в обработчике события Form_Load: DataView
myDataView =
new
DataView(bDTur_firmSQL2DataSet.Туристы);
Запустив приложение, удалим последнюю строку таблицы «Туристы». Она удаляется из первого компонента DataGridView и появляется во втором (рис. 126).
Рис. 126. Демонстрация удаленных записей Для одного объекта DataView в пределах одной версии объекта DataSet (исходной или текущей) возможно объединение фильтров - например, для отображения новых и удаленных записей. Для вывода новых строк (DataViewRowState.Added) и измененных (DataViewRowState.ModifiedCurrent) фильтр будет выглядеть так: myDataView.RowStateFilter = ((DataViewRowState)((DataViewRowState.Added | DataViewRowState.ModifiedCurrent))); Возможные значения свойства RowStateFilter приведены в таблице 17. Свойство RowFilter предназначено для вывода записей, содержащих определенное значение заданного поля. Таблица 17. Значения свойства RowStateFilter объекта DataView
В качестве примера установим фильтрацию по фамилии «Иванов»: DataView
myDataView =
new
DataView(bDTur_firmSQL2DataSet.Tуристы);
После запуска приложения во второй таблице выводятся все записи с фамилиями туристов «Иванов» (рис. 127).
Рис. 127. Фильтрация записей по содержимому поля
Сортировка данных
Свойство Sort предназначено для вывода записей в порядке возрастания (ascending, ASC) или убывания (descending, DESC) по значениям заданного поля. В принципе, элемент DataGridView сам по себе поддерживает сортировку - достаточно просто щелкнуть по заголовку поля. Однако это требует действий от пользователя, тогда как объект DataView может предоставлять данные уже в готовом виде. Удалим значение свойства RowFilter, в поле свойства Sort введем «Фамилия ASC» (результат на рис. 128): DataView
myDataView =
new
DataView(bDTur_firmSQL2DataSet.Туристы);
Рис. 128. Сортировка данных по полю «Фамилия»
Поиск данных
Технология ADO .NET предоставляет значительные возможности для поиска данных - такие объекты, как DataSet, DataTable, содержат специализированные методы для быстрого решения этой задачи. Свойство RowFilter объекта DataView может применяться для создания простого и эффективного поиска. Запускаем Visual Studio 2008 и создаем новый проект типа Windows Forms Control Library (рис. 129). Внешний вид формы в режиме дизайна представлен на рисунке 130. Перейдем к коду. В конструкторе формы отключаем доступность текстового поля и привязываем обработчик события CheckedChanged для элемента CheckBox: public
FindCheckBox() {
В классе формы создаем обработчик события CheckedChanged для CheckBox и определяем действия для значений текстового поля, надписи и элемента CheckBox.
Рис. 129. Выбор шаблона Windows Forms Control Library
Рис. 130. Форма компонента в режиме дизайна private void
chbForSearching_CheckedChanged(object sender, EventArgs e) {
Свойства ColumnName, ColumnValue и SearchEnabled будут свойствами композитного элемента управления, которые будут отображаться в его окне Properties. В квадратных скобках указан атрибут для помещения свойства в заданную группу и описание, выводимое на информационную панель. Откомпилируем приложение и закроем его. Создадим новое Windows-приложение, которое будет использовать созданный компонент. Расположим на форме следующие элементы управления: Panel, свойству Dock которого установим значение Left, Splitter и DataGridView (свойству Dock последнего устанавливаем значение Fill). Добавим созданный компонент в окно ToolBox и перетаскиваем на панель формы из окна Toolbox четыре копии элемента FindCheckBox. Вид формы приложения в режиме дизайна приведен на рисунке 131. Обратите внимание, что в окне Properties, при групповом расположении, свойство ColumnName находится в группе Appearance. На информационную панель выводится описание этого свойства на русском языке. Именно эти параметры были указаны при создании композитного элемента. Добавим обработчик кнопки «Поиск»: private
void btnSearch_Click(object sender, System.EventArgs e) {
Рис. 131. Расположение элементов на форме В классе формы создаем метод FindCustomers, в котором будет осуществляться обработка и который вызывается в обработчике кнопки «Поиск»: private void
FindCustomers() {
Как видно из приведенного кода, для объединения условий, накладываемых на поля, используется логический оператор «ИЛИ». Путем некоторого усложнения кода и созданного компонента для поиска можно создать возможность одновременного использования операторов «И» и «ИЛИ» Запустим приложение. Первый поисковый запрос будет запрашивать всего одно поле (рис. 132).
Рис. 132. Простой поисковый запрос Усложним запрос: зададим условие на два поля (рис. 133).
Рис. 133. Более сложный поисковый запрос
|
1 |
Оглавление
|