Поделиться через


Источники данных, поддерживаемые Windows Forms

Как правило, привязка данных использовалась в приложениях с целью использования преимуществ данных, хранящихся в базах данных. Привязка данных Windows Forms позволяет получать доступ к данным из баз данных, а также к данным в других структурах, таких как массивы и коллекции, при условии соблюдения определенных минимальных требований.

Структуры, к которым выполняется привязка

В Windows Forms можно выполнить привязку к самым разным структурам — от простых объектов (простая привязка) до сложных списков, таких как таблицы данных ADO.NET (сложная привязка). В случае простой привязки Windows Forms поддерживает привязку к открытым свойствам простого объекта. Привязка Windows Forms на основе списка обычно требует, чтобы объект поддерживал интерфейс IList или IListSource. Кроме того, в случае привязки с помощью компонента BindingSource можно выполнить привязку к объекту, поддерживающему интерфейс IEnumerable. Дополнительные сведения об интерфейсах, связанных с привязкой данных, см. в статье Интерфейсы, связанные с привязкой данных.

В следующем списке представлены структуры, к которым можно выполнить привязку в Windows Forms.

BindingSource
BindingSource — наиболее распространенный источник данных Windows Forms; выступает в роли прокси-сервера между источником данных и элементами управления Windows Forms. Общий шаблон использования BindingSource — привязка элементов управления к BindingSource и привязка BindingSource к источнику данных (например, к таблице данных ADO.NET или бизнес-объекту). BindingSource предоставляет службы, которые обеспечивают и улучшают уровень поддержки привязки данных. Например, элементы управления Windows Forms на основе списка, такие как DataGridView и ComboBox, не поддерживают прямую привязку к источникам данных IEnumerable, однако этот сценарий можно осуществить за счет привязки с помощью BindingSource. В этом случае BindingSource преобразует источник данных в IList.

Простые объекты
Windows Forms поддерживает привязку данных свойств элемента управления к открытым свойствам экземпляра объекта с помощью типа Binding. Windows Forms также поддерживает привязку элементов управления на основе списка, например, ListControl к экземпляру объекта при использовании BindingSource.

массив или коллекция
Чтобы выступать в роли источника данных, список должен реализовывать интерфейс IList; один из примеров — массив, который является экземпляром класса Array. Дополнительные сведения о массивах см. в статье Практическое руководство. Создание массива объектов (Visual Basic).

Как правило, при создании списков объектов для привязки данных следует использовать BindingList<T>. BindingList<T> — это универсальная версия интерфейса IBindingList. Интерфейс IBindingList расширяет интерфейс IList путем добавления свойств, методов и событий, необходимых для двусторонней привязки данных.

IEnumerable
Элементы управления Windows Forms можно привязывать к источникам данных, которые поддерживают только интерфейс IEnumerable, в случае привязки посредством компонента BindingSource.

Объекты данных ADO.NET
ADO.NET предоставляет ряд структур данных, подходящих для привязки. Они отличаются сложностью.

  • DataColumn. DataColumn — это универсальный строительный блок DataTable, в котором ряд столбцов составляет таблицу. У каждого DataColumn есть свойство DataType, определяющее тип данных, которые хранятся в столбце (например, создание автомобиля в таблице, описывающей автомобили). Можно выполнить простую привязку элемента управления (например, свойства Text элемента управления TextBox) к столбцу в таблице данных.

  • DataTable. DataTable — это представление таблицы со строками и столбцами в ADO.NET. Таблица данных содержит две коллекции: DataColumn представляет столбцы данных в заданной таблице (это в конечном итоге определяет типы данных, которые можно вносить в таблицу), а DataRow — строки данных в заданной таблице. Можно выполнить сложную привязку элемента управления к сведениям, содержащимся в таблице данных (например, привязку элемента управления DataGridView к таблице данных). Однако при привязке к DataTable фактически осуществляется привязка к представлению таблицы по умолчанию.

  • DataView. DataView — это настраиваемое представление отдельной таблицы данных, которое можно отфильтровать или отсортировать. Представление данных — это "моментальный снимок" данных, используемый элементами управления со сложной привязкой. Можно выполнить простую или сложную привязку к данным в представлении данных, однако помните, что вы выполняете привязку к фиксированной "картине" данных, а не к чистому, обновляемому источнику данных.

  • DataSet. DataSet — это коллекция таблиц, отношений и ограничений данных в базе данных. Можно выполнить простую или сложную привязку к данным в наборе данных, однако помните, что вы выполняете привязку к DataViewManager по умолчанию для DataSet (см. следующий пункт).

  • DataViewManager. DataViewManager — это настраиваемое представление всего DataSet, аналогичное DataView, однако включающее отношения. С помощью коллекции DataViewSettings можно задавать фильтры по умолчанию и параметры сортировки для всех представлений, имеющихся в DataViewManager для данной таблицы.

См. также