Sdílet prostřednictvím


Architektura součásti BindingSource

S komponentou BindingSource můžete univerzální svázat všechny ovládací prvky model Windows Forms se zdroji dat.

Komponenta BindingSource zjednodušuje proces vazeb ovládacích prvků ke zdroji dat a poskytuje následující výhody oproti tradiční datové vazbě:

  • Umožňuje vazbu v době návrhu na obchodní objekty.

  • Zapouzdřuje CurrencyManager funkce a zveřejňuje CurrencyManager události v době návrhu.

  • Zjednodušuje vytváření seznamu, který podporuje IBindingList rozhraní, tím, že poskytuje oznámení o změně seznamu pro zdroje dat, které nativně nepodporují oznámení o změně seznamu.

  • Poskytuje bod rozšiřitelnosti pro metodu IBindingList.AddNew .

  • Poskytuje úroveň nepřímého rozdělení mezi zdrojem dat a kontrolou. Tato nepřímí je důležitá, když se zdroj dat může změnit za běhu.

  • Spolupracuje s jinými ovládacími prvky model Windows Forms souvisejícími s daty, konkrétně ovládacími BindingNavigator prvky a ovládacími DataGridView prvky.

Z těchto důvodů je součástí BindingSource upřednostňovaný způsob vytvoření vazby ovládacích prvků model Windows Forms ke zdrojům dat.

Funkce BindingSource

Tato komponenta BindingSource poskytuje několik funkcí pro vazby ovládacích prvků k datům. Díky těmto funkcím můžete implementovat většinu scénářů datových vazeb s téměř žádným kódováním na vaší straně.

Tato komponenta BindingSource toho dosahuje tím, že poskytuje konzistentní rozhraní pro přístup k mnoha různým druhům zdrojů dat. To znamená, že pro vazbu s libovolným typem použijete stejný postup. Můžete například připojit DataSource vlastnost k obchodnímu objektu DataSet nebo k obchodnímu objektu a v obou případech použít stejnou sadu vlastností, metod a událostí pro manipulaci se zdrojem dat.

Konzistentní rozhraní poskytované komponentou BindingSource výrazně zjednodušuje proces vazby dat k ovládacím prvkům. U typů zdrojů dat, které poskytují oznámení o změnách, BindingSource komponenta automaticky komunikuje mezi ovládacím prvku a zdrojem dat. U typů zdrojů dat, které neposkytují oznámení o změnách, jsou k dispozici události, které umožňují vyvolat oznámení o změnách. Následující seznam obsahuje funkce podporované komponentou BindingSource :

Dereference

Tato komponenta BindingSource poskytuje úroveň nepřímého rozdělení mezi ovládacím prvku a zdrojem dat. Namísto vazby ovládacího prvku přímo ke zdroji dat vytvoříte vazbu ovládacího prvku na a BindingSourcepřipojíte zdroj dat k BindingSource vlastnosti komponenty DataSource .

S touto úrovní nepřímých změn můžete změnit zdroj dat bez resetování řídicí vazby. Získáte tak následující možnosti:

Správa měn

Komponenta BindingSource implementuje ICurrencyManagerProvider rozhraní pro zpracování správy měn za vás. ICurrencyManagerProvider S rozhraním můžete také přistupovat ke správci měn pro , BindingSourcekromě správce měny pro jiné BindingSource svázané se stejnou DataMember.

Komponenta BindingSource zapouzdřuje CurrencyManager funkce a zveřejňuje nejběžnější CurrencyManager vlastnosti a události. Následující tabulka popisuje některé členy související se správou měn.

CurrencyManager Vlastnost
Získá správce měny spojené s BindingSource.

GetRelatedCurrencyManager Metoda
Pokud je k zadanému datovému členu vázána jiná BindingSource hranice, získá správce měny.

Current Vlastnost
Získá aktuální položku zdroje dat.

Position Vlastnost
Získá nebo nastaví aktuální pozici v podkladovém seznamu.

EndEdit Metoda
Použije čekající změny na podkladový zdroj dat.

CancelEdit Metoda
Zruší aktuální operaci úprav.

Zdroj dat jako seznam

Komponenta BindingSource implementuje IBindingListView rozhraní a ITypedList rozhraní. S touto implementací můžete použít samotnou komponentu BindingSource jako zdroj dat bez jakéhokoli externího úložiště.

Když je komponenta BindingSource připojená ke zdroji dat, zpřístupní zdroj dat jako seznam.

Vlastnost DataSource lze nastavit na několik zdrojů dat. Patří mezi ně typy, objekty a seznamy typů. Výsledný zdroj dat se zobrazí jako seznam. Následující tabulka uvádí některé běžné zdroje dat a výsledné vyhodnocení seznamu.

Vlastnost DataSource Výpis výsledků
Nulový odkaz (Nothing v jazyce Visual Basic) Prázdné IBindingList objekty. Přidání položky nastaví seznam na typ přidané položky.
Nulový odkaz (Nothing v jazyce Visual Basic) se DataMember sadou Nepodporováno; ArgumentExceptionvyvolává .
Typ seznamu nebo objekt typu "T" Prázdný IBindingList typ "T".
Instance pole Obsahuje IBindingList prvky pole.
IEnumerable Instance IEnumerable Obsahující IBindingList položky
Výpis instance obsahující typ "T" Instance IBindingList obsahující typ "T".

Kromě toho DataSource je možné nastavit jiné typy seznamů, například IListSource a ITypedList, a BindingSource bude je zpracovávat odpovídajícím způsobem. V tomto případě by typ obsažený v seznamu měl mít konstruktor bez parametrů.

BindingSource jako IBindingList

Komponenta BindingSource poskytuje členům pro přístup k podkladovým datům a manipulaci s nimi jako s IBindingList. Následující tabulka popisuje některé z těchto členů.

Člen Popis
List Vlastnost Získá seznam, který je výsledkem vyhodnocení DataSource nebo DataMember vlastností.
AddNew Metoda Přidá novou položku do podkladového seznamu. Platí pro zdroje dat, které implementují IBindingList rozhraní a umožňují přidávání položek (to znamená, že AllowNew vlastnost je nastavena na true).

Vytvoření vlastní položky

Událost můžete zpracovat tak, aby poskytovala vlastní logiku AddingNew vytváření položek. Událost AddingNew nastane před přidání nového objektu do objektu BindingSource. Tato událost je vyvolána po AddNew zavolání metody, ale před přidáním nové položky do podkladového seznamu. Zpracováním této události můžete poskytnout vlastní chování vytváření položek bez odvození z BindingSource třídy. Další informace naleznete v tématu Postupy: Přizpůsobení přidání položky pomocí model Windows Forms BindingSource.

Vytvoření transakční položky

Komponenta BindingSource implementuje ICancelAddNew rozhraní, které umožňuje vytvoření transakční položky. Po prozatímním vytvoření nové položky pomocí volání AddNewmůže být přidání potvrzeno nebo vráceno zpět následujícími způsoby:

  • Metoda EndNew explicitně potvrdí čekající přidání.

  • Provedení jiné operace shromažďování, jako je vložení, odebrání nebo přesunutí, implicitně potvrdí nevyřízené přidání.

  • Metoda CancelNew vrátí zpět čekající přidání, pokud metoda ještě nebyla potvrzena.

Podpora IEnumerable

Komponenta BindingSource umožňuje ovládací prvky vazby ke IEnumerable zdrojům dat. S touto komponentou můžete vytvořit vazbu ke zdroji dat, jako System.Data.SqlClient.SqlDataReaderje například .

IEnumerable Když je zdroj dat přiřazen ke komponentěBindingSource, BindingSource vytvoří IBindingList do seznamu obsah zdroje dat a přidá hoIEnumerable.

Podpora návrhu

Některé typy objektů nelze vytvořit v době návrhu, například objekty vytvořené z třídy továrny nebo objekty vrácené webovou službou. Někdy může být nutné svázat ovládací prvky s těmito typy v době návrhu, i když v paměti není žádný objekt, ke kterému mohou ovládací prvky vytvořit vazbu. Můžete například označit záhlaví DataGridView sloupců ovládacího prvku názvy veřejných vlastností vašeho vlastního typu.

Pro podporu tohoto scénáře BindingSource komponenta podporuje vazbu na .Type Když vlastnost DataSource přiřadíteType, komponenta BindingSource vytvoří prázdné BindingList<T> položkyType. Všechny ovládací prvky, které následně svážete s komponentou BindingSource , budou upozorněny na přítomnost vlastností nebo schématu vašeho typu v době návrhu nebo v době běhu. Další informace naleznete v tématu Postupy: Vytvoření vazby ovládacího prvku model Windows Forms k typu.

Statické metody ListBindingHelper

Všechna sdílená logika System.Windows.Forms.BindingContexta typy , System.Windows.Forms.CurrencyManagerBindingSource které generují seznam z páru, a všechny sdílejí společnou logikuDataSource/DataMember. Kromě toho je tato běžná logika veřejně zpřístupněna pro použití autory ovládacích prvků a jinými třetími stranami v následujících static metodách:

Řazení a filtrování pomocí rozhraní IBindingListView

Komponenta BindingSource implementuje IBindingListView rozhraní, které rozšiřuje IBindingList rozhraní. Nabízí IBindingList řazení s jedním sloupcem IBindingListView a nabízí rozšířené řazení a filtrování. Pomocí IBindingListViewfunkce můžete řadit a filtrovat položky ve zdroji dat, pokud zdroj dat také implementuje jedno z těchto rozhraní. Komponenta BindingSource neposkytuje referenční implementaci těchto členů. Místo toho se volání přesměrují do podkladového seznamu.

Následující tabulka popisuje vlastnosti, které používáte k řazení a filtrování.

Člen Popis
Filter Vlastnost Pokud je zdrojem dat , IBindingListViewzíská nebo nastaví výraz použitý k filtrování zobrazených řádků.
Sort Vlastnost Pokud je IBindingListzdrojem dat , získá nebo nastaví název sloupce sloužící k řazení a řazení informací o pořadí řazení.

nebo

Pokud je IBindingListView zdrojem dat a podporuje rozšířené řazení, získá více názvů sloupců používaných k řazení a řazení.

Integrace s BindingNavigatorem

Komponentu můžete použít k vytvoření vazby BindingSource libovolného ovládacího prvku model Windows Forms ke zdroji dat, ale BindingNavigator ovládací prvek je navržený speciálně pro práci s komponentouBindingSource. Ovládací BindingNavigator prvek poskytuje uživatelské rozhraní pro řízení BindingSource aktuální položky komponenty. Ve výchozím nastavení BindingNavigator ovládací prvek poskytuje tlačítka, která odpovídají navigačním metodám komponenty BindingSource . Další informace naleznete v tématu Postupy: Navigace dat pomocí ovládacího prvku model Windows Forms BindingNavigator.

Viz také