Архитектура компонента BindingSource
С помощью BindingSource компонент, глобально, все элементы управления Windows Forms можно привязать к источникам данных.
BindingSource Компонента упрощает процесс привязки элементов управления к источнику данных и предоставляет следующие преимущества по сравнению с традиционной привязке данных:
Обеспечивает связывание во время разработки к бизнес-объектам.
Инкапсулирует CurrencyManager функциональные возможности и предоставляет CurrencyManager события во время разработки.
Упрощает создание списка, поддерживающего IBindingList интерфейса, предоставляя уведомления об изменении списка источников данных, которые изначально не поддерживают список уведомлений об изменениях.
Предоставляет точку расширения для IBindingList.AddNew метод.
Обеспечивает уровень косвенного обращения между источником данных и элементом управления. Такое обращение очень важно, когда источник данных может изменяться во время выполнения.
Взаимодействует с другие данных Windows Forms элементы управления, в частности BindingNavigator и DataGridView элементов управления.
По этим причинам BindingSource компонент является предпочтительным способом привязки элементов управления Windows Forms к источникам данных.
Функции BindingSource
BindingSource Компонент предоставляет несколько возможностей для привязки элементов управления к данным. Эти функции можно реализовать большинства сценариев привязки данных практически без написания кода со стороны пользователя.
BindingSource Компонента это достигается путем предоставления согласованного интерфейса для доступа к много различных типов источников данных. Это означает, что использовать ту же процедуру для привязки к любому типу. Например, можно присоединить DataSource свойства DataSet или бизнес-объекта и в обоих случаях вы используют один набор свойств, методов и событий для управления источника данных.
Согласованный интерфейс, предоставляемый BindingSource компонент значительно упрощает процесс привязки данных к элементам управления. Для типов источников данных, которые предоставляют уведомления об изменениях, BindingSource компонент автоматически передает изменения между элементом управления и источника данных. Для типов источников данных, не предоставляет уведомления об изменениях предусмотрены события, которые позволяют получение уведомления об изменении. В следующем списке приведены возможности, поддерживаемые BindingSource компонента:
Косвенное обращение.
Оперативное управление.
Источник данных в виде списка.
Создание пользовательских элементов.
Создание транзакционных элементов.
IEnumerable Поддержка.
Поддержка времени разработки.
Статические ListBindingHelper методы.
Сортировка и фильтрация с использованием IBindingListView интерфейс.
Интеграция с BindingNavigator.
Косвенное обращение
BindingSource Компонент обеспечивает уровень косвенного обращения между элементом управления и источником данных. Вместо привязки элемента управления к источнику данных, привязать элемент управления BindingSource, и подключить источник данных для BindingSource компонента DataSource свойство.
С этим уровнем косвенного обращения можно изменить без сброса привязки элемента управления источника данных. Это дает следующие возможности:
Вы можете подключить BindingSource к различным источникам данных, сохраняя текущие привязки элемента управления.
Можно изменить элементы в источнике данных и уведомлять связанные элементы управления. Дополнительные сведения см. в разделе Как Отражение обновились в источнике данных в элементе управления Windows Forms с использованием компонента BindingSource.
Можно привязать к Type вместо объекта в памяти. Дополнительные сведения см. в разделе Как Привязка элемента управления Windows Forms к типу. Затем, можно привязать к объекту во время выполнения.
Управление валюты
BindingSource Компонент реализует ICurrencyManagerProvider интерфейса для обработки управления валюты для вас. С помощью ICurrencyManagerProvider интерфейс, можно также обращаться для диспетчер денежных единиц для BindingSource, помимо диспетчер денежных единиц для другого BindingSource привязан к той же DataMember.
BindingSource Инкапсулирует компонент CurrencyManager функциональные возможности и предоставляет стандартные CurrencyManager свойства и события. Ниже перечислены некоторые из элементов, связанных с управлением валюты.
CurrencyManager свойство;
Получает диспетчер денежных единиц, сопоставленный BindingSource.
GetRelatedCurrencyManager метод
Если существует другой BindingSource привязан к указанному элементу данных, Получает диспетчер денежных единиц.
Current свойство;
Возвращает текущий элемент источника данных.
Position свойство;
Возвращает или задает текущую позицию в базовом списке.
EndEdit метод
Применяет ожидающие изменения к базовому источнику данных.
CancelEdit метод
Отменяет текущую операцию редактирования.
Источник данных в виде списка
BindingSource Компонент реализует IBindingListView и ITypedList интерфейсов. В этой реализации можно использовать BindingSource сам компонент как источник данных без любого внешнего хранилища.
Когда BindingSource компонент подключен к источнику данных, он представляет источник данных в виде списка.
DataSource Может быть установлено для нескольких источников данных. К ним относятся типы, объекты и списки типов. Итоговый источник данных будет представлен в виде списка. В следующей таблице показаны некоторые общие источники данных и оценка полученного списка.
Свойство DataSource | Список результатов |
---|---|
Пустая ссылка (Nothing в Visual Basic) |
Пустой IBindingList объектов. Добавление элемента списка присваивается тип добавляемого элемента. |
Пустая ссылка (Nothing в Visual Basic) с DataMember значение |
Не поддерживается; вызывает ArgumentException. |
Тип списка не или объект типа «T» | Пустой IBindingList типа «T». |
Экземпляр массива | IBindingList Содержащий элементы массива. |
IEnumerable экземпляр | IBindingList Содержащий IEnumerable элементов |
Экземпляр списка, содержащий тип «T» | IBindingList Экземпляр, содержащий тип «T». |
Кроме того DataSource можно задать для других типов списков, такие как IListSource и ITypedListи BindingSource будет обрабатывать их соответствующим образом. В этом случае тип, содержащийся в списке должен иметь конструктор по умолчанию.
BindingSource следующим IBindingList
BindingSource Компонент предоставляет члены для доступа и обработки базовых данных как IBindingList. Ниже перечислены некоторые из этих членов.
Член | Описание |
---|---|
List свойство; | Получает список, полученный в результате вычисления DataSource или DataMember свойства. |
AddNew метод | Добавляет новый элемент в базовый список. Применяется к источникам данных, которые реализуют IBindingList интерфейс и позволяют добавлять элементы (т. е AllowNew свойству true ). |
Создание пользовательских элементов
Можно обрабатывать AddingNew событие, чтобы предоставить свою собственную логику создания элементов. AddingNew Событие возникает перед добавлением нового объекта BindingSource. Это событие возникает после AddNew вызывается метод, но перед добавлением нового элемента в базовый список. Обрабатывая это событие, можно указать поведение создания пользовательского элемента не на основе BindingSource класса. Дополнительные сведения см. в разделе Как Настройка добавления элемента с помощью компонента BindingSource в Windows Forms.
Создание транзакционных элементов
BindingSource Компонент реализует ICancelAddNew интерфейс, который позволяет создавать транзакционные элементы. После элемента условно создается с помощью вызова AddNew, добавление может зафиксировать или откатить назад, одним из следующих способов:
EndNew Метод явным образом подтверждает отложенное добавление.
Выполнение другой операции коллекции, такие как вставки, удаления или перемещения, неявно фиксируется ожидающего добавления.
CancelNew Метод приведет к откату ожидающего добавления Если метод не уже была зафиксирована.
Поддержка интерфейса IEnumerable
BindingSource Компонент позволяет привязывать элементы управления к IEnumerable источников данных. С этим компонентом можно привязать к источнику данных такие как System.Data.SqlClient.SqlDataReader.
Когда IEnumerable источник данных будет назначен BindingSource компонента, BindingSource создает IBindingList и добавляет содержимое IEnumerable источника данных в списке.
Поддержка времени разработки
Некоторые типы объектов не может создаваться во время разработки, например объекты, созданные на основе класса фабрики или объектов, возвращаемых веб-службой. Иногда необходимо привязать к элементам управления для этих типов во время разработки, несмотря на то, что отсутствует объект в памяти, к которому можно привязать к элементам управления. Например, может потребоваться пометить заголовки столбцов из DataGridView управления имена открытых свойств пользовательского типа.
Для поддержки этого сценария BindingSource компонент поддерживает привязку к Type. При назначении Type для DataSource свойство, BindingSource компонент создает пустой BindingList<T> из Type элементов. Все элементы управления, можно впоследствии привязку к BindingSource компонент будут отображаться оповещения о наличии свойств или схемы данного типа, во время разработки или во время выполнения. Дополнительные сведения см. в разделе Как Привязка элемента управления Windows Forms к типу.
ListBindingHelper статические методы
System.Windows.Forms.BindingContext, System.Windows.Forms.CurrencyManager, И BindingSource типы всех общую логику общую папку для создания списка из DataSource
/ DataMember
пары. Кроме того, эта общая логика открыта для использования авторами элемента управления и другими третьими лицами, в следующем static
методы:
Сортировка и фильтрация с использованием IBindingListView-интерфейс
BindingSource Компонент реализует IBindingListView интерфейс, который расширяет IBindingList интерфейс. IBindingList Предлагает сортировке одного столбца и IBindingListView предлагает расширенную сортировки и фильтрации. С помощью IBindingListView, можно сортировать и фильтровать элементы в источнике данных, если источник данных, также реализует один из этих интерфейсов. BindingSource Компонент не предоставляет справочную реализацию этих членов. Вместо этого звонки передаются в базовый список.
В следующей таблице описаны свойства, которые можно использовать для сортировки и фильтрации.
Член | Описание |
---|---|
Filter свойство; | Если источником данных является IBindingListView, то возвращает или задает выражение, используемое для фильтрации просматриваемых строк. |
Sort свойство; | Если источником данных является IBindingList, то возвращает или задает имя столбца, используемого для сортировки, и порядок сортировки. -или- Если источником данных является IBindingListView и поддерживается Расширенная сортировка, получает имя столбца, используемого для сортировки и порядок сортировки |
Интеграция с BindingNavigator
Можно использовать BindingSource компонента для привязки любого элемента управления Windows Forms к источнику данных, но BindingNavigator элемент управления предназначен специально для работы с BindingSource компонента. BindingNavigator Управления предоставляет пользовательский интерфейс для управления BindingSource компонента текущего элемента. По умолчанию BindingNavigator управления содержит кнопки, которые соответствуют методам навигации на BindingSource компонента. Дополнительные сведения см. в разделе Как Навигация по набору данных с помощью элемента управления BindingNavigator в Windows Forms.
См. также
- BindingSource
- BindingNavigator
- Общие сведения о компоненте BindingSource
- BindingNavigator — элемент управления
- Привязка данных Windows Forms
- Элементы управления для использования в формах Windows Forms
- Практическое руководство. Связывание элемента управления с типом в Windows Forms
- Практическое руководство. Отражения в элементе управления данных, которые обновились в источнике, с использованием компонента BindingSource в Windows Forms