2. Работа с наборами типизированных данных

Доступ к XML-данным

net сам по себе является

Доступ к XML-данным в. NET сам по себе является огромной темой, не связанной по большей части с реляционным доступом к данным. Есть несколько причин, которые делают его трудной темой для краткого обзора. Начать хотя бы со всех тех стандартов, знание которых является необходимой предпосылкой для работы с XML, таких, как сам стандарт XML, XPath, XML Schema, XSLT и XQuery. Далее, имеется несколько моделей работы с XML в. NET. Наконец, средства XML в. NET Framework были существенно расширены в версии 2.0. Невозможно вкратце охватить все способы программирования в. NET при помощи XML, поэтому я ограничусь теми моментами, которые позволят вам понять, каким образом можно принять данные XML в ваше приложение Windows и отобразить эти данные через элементы управления Windows Forms. Не существует способа непосредственной привязки XML-данных к каким-либо элементам управления Windows Forms, поставляемым с. NET Framework. Чтобы использовать XML-данные в привязке данных, вам нужно будет либо ввести их в набор данных, либо прочитать в специальные рабочие объекты, пригодные для привязки данных. Начать свое знакомство с XML в. NET вам следует с существующих разновидностей объектных моделей XML. Имеется класс XmlDocument, Который предусматривает реализацию стандарта Объектной модели документа XML W3C. Этот класс позволяет работать с XML в форме документов, которые читаются в память во всей своей полноте в «тяжелую» объектную модель. Существует также класс XmlDataDocument, Который на самом деле является просто производным от XmlDocument. Помимо того, что он предоставляет DOM-хранилище для XML, этот класс инкапсулирует набор данных, позволяющий работать с содержимым документа как с реляционными данными. Класс XmlDataDocument Позволяет вам также поместить реляционные данные через набор данных в объект, после чего вы можете манипулировать этими данными как XML. Классы XmlReader И XmlWriter Предлагают очень легкий потоковый подход для чтения XML. Эти классы и производные от них могут использоваться совместно с другими возможностями. NET, такими, как сериализация XML, доступ к данным XML из реляционных хранилищ и сырой доступ к потокам XML с диска или через сеть. Наконец, имеется новая объектная модель, введенная в. NET 1.0, основанная на классах XPathDocument И XPathNavigator. В. NET 2.0 эти классы образуют базис предпочтительного метода работы с XML.

Расширение привязанных элементов управления Framework

а именно если вы хотите

В зависимости от того, какого рода специальные функции привязки данных вам необходимо поддерживать, наилучшим решением может оказаться наследование от одного из существующих элементов управления из. NET Framework. А именно, если вы хотите приспособить к своим нуждам представление данных в элементе управления, то многие из элементов Windows Forms экспонируют в базовом классе богатую модель событий и виртуальные методы, позволяющие вам интегрировать в них свой собственный код, чтобы настроить внешний вид и/или поведение элемента управления, как он будет представлен пользователю или когда последний будет с ним взаимодействовать. Поведение элементов управления Windows Forms в привязке данных очень тесно переплетено с остальными их аспектами; оно не экспонируется так, чтобы можно было легко переопределить поведение при наследовании от элемента управления. Если вам нужно изменить данные, представляемые в элементе управления, то проще изменить источник данных, к которому вы привязываетесь, чем пытаться заставить элемент управления изменить то, какие данные из привязанного источника он должен отображать. Например, если вы хотите показывать в привязанном элементе управления только избранные элементы коллекции данных, нужно просто привязать его к источнику привязки и воспользоваться свойством Filter Последнего, чтобы модифицировать набор элементов данных, представляемых в элементе управления. В качестве альтернативы можно было бы исполнять повторный запрос в зависимости от действий пользователя. Однако если вы хотите изменить внешний вид данных в элементе управления, то большинство из привязанных к данным элементов Windows Forms позволяют вам частично либо полностью взять под свой контроль рисование или логику отображения, и выполнять отображение данных самостоятельно. В случае текстовых полей, комбинированных полей и DataGridview Существуют способы управления событиями рисования, возбуждаемыми Framework, и в своем обработчике вы можете сами выполнять отображение данных. Имеются также возможности настройки форматирования данных, как они будут представлены в элементе управления.

Поддержка сортировки в IBindingList

свойство b supportssorting b позволяет

Следующей категорией функций, специфицируемых элементами интерфейса IBindingList, Является сортировка. Свойство SupportsSorting Позволяет коллекции указать, поддерживает ли она вообще сортировку. Если нет, то привязанный элемент управления даже не должен показывать пользователю какие-либо средства сортировки. Если коллекция поддерживает сортировку, то методы ApplySort И RemoveSort Позволяют элементу управления активировать либо исключать функции сортировки, предусматриваемые коллекцией. Метод ApplySort Принимает два аргумента: PropertyDescriptor, Идентифицирующий свойство, по которому вы хотите сортировать, и перечисление ListSortDirection, Значением которого может быть Ascending Либо Descending. Поддержка сортировки, определяемая интерфейсом IBindingList, Обеспечивает сортировку только по одному критерию. Для сортировки по набору свойств нужно реализовать интерфейс IBindingListView, Как описывается в следующем разделе. сначала конструирует «на ходу» простой набор данных, с которым он будет работать, и возвращает в качестве коллекции данных его псевдотаблицу по умолчанию. Класс Dataview Реализует оба интерфейса IBindingList И ITypedList, Что позволяет нам динамически определять поведение и содержимое коллекции данных. Разумеется, в настоящем программном продукте нужно было бы проверить результат приведения, и если приведение неудачно, предпринять соответствующие действия. После получения интерфейсных ссылок на коллекцию данных код вызывает вспомогательный метод DumpList, Чтобы вывести содержимое списка до того, как к нему будут применены какие-либо сортировки.

Использование контейнеров планировки

эти три элемента управления являются

Элементы управления FlowLayoutPanel, TableLayoutPanel И SplitCon — Tainer Могут быть исключительно полезны для создания сложных размещений элементов управления на формах с минимальными усилиями. Эти три элемента управления являются новыми в. NET 2.0. Элемент управления FlowLayoutPanel Позволяет вам осуществить поведение, сходное с поведением планировки по умолчанию для Web-страниц. А именно, любые элементы управления в FlowLayoutPanel Будут реорганизовывать себя так, чтобы заполнить область контейнера непрерывным потоком слева направо в том порядке, в каком они добавлялись в контейнер, и с переходом на новый ряд, когда больше не будет места справа. Это поведение по умолчанию, но вы можете также модифицировать свойство Flow — Direction, Установив его равным одному из перечислимых значений Left — ToRight , TopDown, RightToLeft Или BottomUp. Элемент управления TableLayoutPanel Позволяет осуществлять табличное размещение элементов управления, где они сохраняют свое положение относительно друг друга и образуют на форме таблицу или сетку. Вы можете использовать этот элемент управления, чтобы достигнуть того эффекта, для которого проектировщики развитых Web-страниц используют таблицы в HTML. Вы можете вкладывать табличные элементы управления планировки в ячейки других табличных элементов управления планировки, поучая сложную, но хорошо организованную планировку элементов управления, которая разумно ведет себя при изменении размеров формы. Это особенно полезно для сценариев локализации, где метки или текст в элементах управления будут определяться динамически из файлов ресурсов или из базы данных, а соответствующий элемент управления будет автоматически изменять свой размер в зависимости от высоты или ширины своего содержания.

Программное добавление строк

в большинстве случаев это делается

Как только вы определили столбцы сетки, можно программно добавлять к ней строки. В большинстве случаев это делается при помощи метода Add Коллекции Rows Сетки. Когда вы добавляете строку таким образом, типы ее ячеек будут определяться в соответствии с шаблонами ячеек, которые были специфицированы при создании столбцов. Каждая ячейка будет иметь значение по умолчанию, зависящее от типа ячейки и соответствующее, как правило, пустой ячейке. Различные перегрузки метода Add Позволяют вам добавлять единственным вызовом несколько строк или передавать методу уже созданную строку. Элемент управления DataGridView Поддерживает также создание гетерогенных столбцов, в том смысле, что такой столбец может иметь ячейки различных типов. Для создания гетерогенных столбцов нужно сначала конструировать строку, не прикрепляя ее к сетке. После этого вы добавляете к строке желаемые ячейки, а затем добавляете новую строку к сетке. Например, следующий код добавляет к строке в качестве первой ячейки комбинированное поле, вводит в него пару элементов, добавляет для остальных четырех ячеек текстовые поля, после чего добавляет строЧтобы добавить к сетке такую строку, сетка должна быть уже инициализирована набором столбцов, которые она будет содержать по умолчанию. Кроме того, число ячеек в добавляемой строке должно соответствовать числу столбцов по умолчанию. В показанном коде неявно добавляется пять столбцов с текстовыми полями, а затем в качестве первой строки сетки добавляется гетерогенная строка, в которую перед этим добавляются конструируемые по отдельности ячейки.