3. Общее представление о привязке данных в Windows Forms

Разработка ASP. NET

net то знаете что все

Если вы занимались какими-либо разработками ASP. NET, то знаете, что все эти виды верификации охватываются набором серверных верифицирующих элементов управления, которые вы можете поместить на Web-страницу для выполнения верификации других элементов управления на странице. BASP. NET входят RequiredFieldValidator, CompareValidator, RangeVali — Dator И RegularExpressionValidator, Обеспечивающие четыре вида верификации, описанные выше. Имеется еще элемент управления ValidationSum — Mary, Который позволя2ет отображать все сообщения об ошибках, вызванные неудачными результатами верификации, в одном месте страницы, избавляя от необходимости выделять место для каждого элемента управления, где отображалась бы информация об ошибке. К сожалению, в Windows Forms нет аналогичных готовых элементов управления. Билли Холлисом и Майклом Вайнхардтом было написано несколько превосходных статей, описывающих методики расширения возможностей верификации в. NET 1.1. Многое из того, о чем там говорилось, приложимо и в. NET 2.0, например, о создании дополнительных элементов управления или компонентов, упрощающих процесс верификации ввода от элементов управления в Windows Forms. В своей статье в «MSDN Online» Билли Холлис описывает подход, связанный с созданием провайдера расширения, охватывающего все четыре вышеупомянутые формы верификации.

Майкл Вайнхардт в своей серии из трех статей применяет другой подход и использует классы, производные от Component, Для создания отдельных элементов управления, поддерживающих каждую из четырех форм верификации, а также предусматривает механизм для централизованной верификации элементов управления на форме. Подход, описанный во 2-й и 3-й частях статьи Вайнхардта, несколько устарел из-за появления в. NET 2.0 метода Validatechildren И свойства AutoValidate.

Хранение в базе данных графического изображения

b для представления этого изображения

Например, при хранении в базе данных графического изображения обычно сохраняют сырые байты графического файла или объекта в столбце Image. Для представления этого изображения вам требуется трансформировать его в тот тип изображения, который совместим с возможностями ваших элементов управления. Вам может также потребоваться модифицировать графические данные перед их представлением, например, масштабировать изображение. Если речь идет о датах или о числах с плавающей точкой, база данных может хранить их с более высокой точностью, чем требуется вам, и опять возникает нужда в преобразовании. Наконец, в столбце вашей таблицы может содержаться внешний ключ, и вместо отображения значения ключа вам потребуется отображать соответствующее значение, извлеченное из столбца родительской таблицы. Например, если вы отображаете список заказов, нужно отображать имя клиента вместо его идентификатора. В столбцах базы данных могут содержаться значения Null Для столбцов, которые транслируются в типы значений системы типов. NET, но поскольку типы значений никогда не могут быть нулевыми, что случится, если вы попытаетесь привязать данные из такого столбца к свойству элемента управления, определяющему тип значения? Ответ на этот вопрос зависит от устройства элемента управления, и хорошо спроектированный элемент управления корректно обработает нулевое значение, и кроме того, будет документировано, каким будет его поведение. Примеры того, как контролировать это поведение, вы встретите в следующих разделах. Во всех таких случаях есть простой способ найти решение, если вы знаете, где его искать. В главе 6 подобные ситуации подробно описываются на примере элемента управления DataGridView. В данном разделе мы рассмотрим привязку данных сложных типов к отдельным свойствам элемента управления. Ключевая роль здесь принадлежит пониманию работы класса Binding, Тому, как этот класс контролирует процесс привязки данных. В листинге 3.4 объект Binding Создавался и добавлялся к коллекции DataBindings Текстового поля неявно благодаря перегрузке метода Add В этой коллекции:

Элементы управления Listview

этот класс является оболочкой элемента

Элемент управления Listview Довольно сложен и позволяет вам представлять коллекцию информации в нескольких различных видах. Этот класс является оболочкой элемента управления операционной системы, который использует Windows Explorer, где вы можете переключаться между видами малых значков, больших значков, таблицы и списка тех элементов, которые он содержит. Чтобы заполнить элементу управления элементами для отображения, вы должны конструировать экземпляры класса Listviewitem. Этот класс представляет собой контейнер данных для каждого элемента, позволяя вам специфицировать текст элемента и изображение, которое будет использовано для отображения больших и малых значков. Вы можете также ассоциировать с элементом коллекцию субэлементов, и эти субэлементы будут использоваться для отображения табличного вида Listview. Элемент управления не поддерживает никакой непосредственной привязки данных, поскольку корректное конструирование объектов Listviewitem Не может естественным и обобщенным образом быть сопоставлено с реляционным набором данных. Элемент управления TreeView Позволяет вам отобразить иерархический управляемый вид данных в своем приложении. Вид дерева представляет коллекцию узлов примерно таким же образом, как вид папок в левой панели Windows Explorer. Каждый узел дерева является объектом типа TreeNode, Который имеет свойства Image И Text, Определяющие, что будет отображаться для узла. Вы можете специфицировать, отображать ли линии между узлами, отображать ли рядом с каждым узлом значки плюс/минус для развертывания дерева и поля флажков для выбора нескольких узлов. Как и Listview, Элемент управления TreeView Не поддерживает непосредственно привязку данных, поскольку не существует естественного отображения реляционных данных на древовидную структуру.

Пути к данным в источниках

объект верхнего уровня играет роль

Источники данных, участвующие в привязке данных Windows Forms, рассматриваются как иерархические. Объект верхнего уровня играет роль контейнера для коллекций данных, а сами коллекции являются контейнерами для отдельных элементов данных. Каждый элемент данных, в свою очередь, содержит значения для свойств объекта. Источник данных может быть устроен и проще: это может быть объект, содержащий свойства, или это может быть простой массив объектов. При работе с произвольными коллекциями объектов, играющими роль источников данных, уровни иерархии могут спускаться сколь угодно глубоко. У вас есть объект верхнего уровня, Company, Который содержит коллекцию Employees; Каждый объект Employee Может содержать коллекции Jobs, Tasks И Contacts, А также элементы данных, специфичные для Employee; А каждая из дочерних коллекций может содержать или другие коллекции, или собственно элементы данных. Чтобы справляться с со всеми такими ситуациями, источники данных рассматриваются как иерархии, а для спецификации источников и элементов данных используется синтаксис путей. Тем самы обеспечивается точная спецификация местоположения требуемого элемента в иерархии.

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

Этот альтернативный подход к спецификации привязки данных для текстового поля иллюстрируется кодом листинга 3.5.

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

главы этой книги концентрируют внимание

Visual Studio поставляется более чем с 65 элементами управления и компонентами в Toolbox, которые вы можете добавлять к своим формам Windows простым перетаскиванием на поверхность разработки. Главы этой книги концентрируют внимание на таком использовании элементов управления для представления данных, когда они привязаны к источникам данных различного типа. Настоящий раздел охватывает наиболее распространенные элементы управления, которые вы будете использовать для представления данных, с привязкой или без привязки данных. Далее в одном из разделов будут показаны некоторые из замечательных новых элементов управления. NET 2.0, которые используются в приложениях обработки данных для целей, отличных от привязки данных. Основные главы книги углубляются во все детали привязанных к данным элементов управления, как тех, что существовали в. NET 1.x, но остаются жизнеспособными и сегодня, так и тех, которые появились в. NET 2.0. Поскольку все элементы управления Windows Forms производятся от базового класса Control, Они разделяют общий набор свойств, которые доступны в любом элементе управления. В их число входят такие свойства, как Font, BackColor, ForeColor И BorderStyle, Которые воздействуют на представление элемента управления; Position, Anchor И Dock, Которые влияют на расположение элемента управления; и Locked, Visible И Enabled, Которые влияют на то, может ли пользователь видеть или использовать элемент управления. Дальнейшие разделы описывают, каким образом вы располагаете элементы управления и устанавливаете их порядок табуляции, чтобы пользователь при помощи клавиши Tab мог передвигаться от одного элемента управления к другому в определенном порядке. Все описанные здесь элементы управления могут использоваться путем написания кода, работающего с их свойствами, методами и событиями. Вы также можете сделать с этими элементами управления почти все, что вам нужно, интерактивно через конструктор и окно свойств. Наконец, все эти элементы управления, кроме Listview И Treeview, Поддерживают также некоторую форму привязки данных через их свойства и внутренние возможности привязки данных Windows Forms.