Пред.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 След.
Макеты страниц
Распознанный текст, спецсимволы и формулы могут содержать ошибки, поэтому с корректным вариантом рекомендуем ознакомиться на отсканированных изображениях учебника выше Также, советуем воспользоваться поиском по сайту, мы уверены, что вы сможете найти больше информации по нужной Вам тематике ДЛЯ СТУДЕНТОВ И ШКОЛЬНИКОВ ЕСТЬ
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 |
Оглавление
|