Delen via


Architectuur van bindingsource-onderdelen

Met het BindingSource onderdeel kunt u alle Besturingselementen van Windows Forms universeel verbinden met gegevensbronnen.

Het BindingSource onderdeel vereenvoudigt het proces van bindingsbesturingselementen voor een gegevensbron en biedt de volgende voordelen ten opzichte van traditionele gegevensbinding:

  • Hiermee schakelt u ontwerptijdbinding in voor zakelijke objecten.

  • De functionaliteit wordt ingekapseld in CurrencyManager en CurrencyManager gebeurtenissen worden weergegeven gedurende het ontwerpproces.

  • Vereenvoudigt het maken van een lijst die ondersteuning biedt voor de IBindingList interface door een melding voor lijstwijzigingen op te geven voor gegevensbronnen die geen systeemeigen ondersteuning bieden voor meldingen over lijstwijzigingen.

  • Biedt een uitbreidbaarheidspunt voor de IBindingList.AddNew methode.

  • Biedt een niveau van indirectie tussen de gegevensbron en het besturingselement. Deze indirectie is belangrijk wanneer de gegevensbron tijdens runtime kan worden gewijzigd.

  • Werkt samen met andere gegevensgerelateerde Besturingselementen voor Windows Forms, met name de BindingNavigator besturingselementen en de DataGridView besturingselementen.

Om deze redenen is het BindingSource onderdeel de voorkeurswijze om uw Besturingselementen voor Windows Forms te binden aan gegevensbronnen.

BindingSource-functies

Het BindingSource onderdeel biedt verschillende functies voor het binden van besturingselementen aan gegevens. Met deze functies kunt u de meeste scenario's voor gegevensbinding implementeren zonder dat u codeert.

Het BindingSource onderdeel doet dit door een consistente interface te bieden voor toegang tot veel verschillende soorten gegevensbronnen. Dit betekent dat u dezelfde procedure gebruikt voor het binden aan elk type. U kunt de DataSource eigenschap bijvoorbeeld koppelen aan een DataSet of een zakelijk object. In beide gevallen gebruikt u dezelfde set eigenschappen, methoden en gebeurtenissen om de gegevensbron te bewerken.

De consistente interface van het BindingSource onderdeel vereenvoudigt het proces van bindingsgegevens aan besturingselementen aanzienlijk. Voor gegevensbrontypen die wijzigingsmeldingen bieden, communiceert het BindingSource onderdeel automatisch wijzigingen tussen het besturingselement en de gegevensbron. Voor gegevensbrontypen die geen wijzigingsmelding bieden, worden gebeurtenissen verstrekt waarmee u wijzigingsmeldingen kunt verzenden. De volgende lijst bevat de functies die door het BindingSource onderdeel worden ondersteund:

Indirectie

Het BindingSource onderdeel biedt een niveau van indirectie tussen een besturingselement en een gegevensbron. In plaats van een besturingselement rechtstreeks aan een gegevensbron te koppelen, koppelt u het besturingselement aan een BindingSourceen koppelt u de gegevensbron aan de eigenschap van BindingSource het DataSource onderdeel.

Met dit niveau van indirectie kunt u de gegevensbron wijzigen zonder de besturingsbinding opnieuw in te schakelen. Dit biedt u de volgende mogelijkheden:

Valutabeheer

Het BindingSource onderdeel implementeert de ICurrencyManagerProvider interface voor het afhandelen van valutabeheer voor u. Met de ICurrencyManagerProvider interface kunt u ook toegang krijgen tot de valutamanager voor een BindingSource, naast de valutamanager voor een andere BindingSource die aan hetzelfde DataMemberis gebonden.

Het BindingSource onderdeel bevat CurrencyManager functionaliteit en toont de meest voorkomende CurrencyManager eigenschappen en gebeurtenissen. In de volgende tabel worden enkele leden beschreven die betrekking hebben op valutabeheer.

CurrencyManager De eigenschap krijgt de valutamanager die is gekoppeld aan de BindingSource.

GetRelatedCurrencyManager methode Als er een andere BindingSource afhankelijk is van het opgegeven gegevenslid, haalt u de valutamanager op.

Current de eigenschap Haalt het huidige item van de gegevensbron op.

Position de eigenschap Haalt de huidige positie in de onderliggende lijst op of stelt deze in.

EndEdit de methode Past wijzigingen in behandeling toe op de onderliggende gegevensbron.

CancelEdit de methode Annuleert de huidige bewerking.

Gegevensbron als een lijst

Het BindingSource onderdeel implementeert de IBindingListView en ITypedList interfaces. Met deze implementatie kunt u het BindingSource onderdeel zelf gebruiken als gegevensbron, zonder externe opslag.

Wanneer het BindingSource onderdeel is gekoppeld aan een gegevensbron, wordt de gegevensbron als een lijst weergegeven.

De DataSource eigenschap kan worden ingesteld op verschillende gegevensbronnen. Dit zijn typen, objecten en lijsten met typen. De resulterende gegevensbron wordt weergegeven als een lijst. In de volgende tabel ziet u enkele algemene gegevensbronnen en de resulterende lijstevaluatie.

Eigenschap DataSource Lijst met resultaten
Een null-verwijzing (Nothing in Visual Basic) Een lege IBindingList verzameling van objecten. Als u een item toevoegt, wordt de lijst ingesteld op het type toegevoegd item.
Een null-verwijzing (Nothing in Visual Basic) waarbij DataMember is ingesteld Niet ondersteund; ArgumentExceptionverhoogt .
Niet-lijsttype of object van het type 'T' Een leeg IBindingList van het type 'T'.
Matrixexemplaren Een IBindingList met de matrixelementen.
IEnumerable voorbeeld Een IBindingList met de IEnumerable items
Lijstexemplaren met het type 'T' Een IBindingList exemplaar met het type T.

Daarnaast kan DataSource worden ingesteld op andere lijsttypen, zoals IListSource en ITypedList, en BindingSource zal deze correct verwerken. In dit geval moet het type in de lijst een parameterloze constructor hebben.

BindingSource als een IBindingList

Het BindingSource-onderdeel biedt methoden voor toegang tot en bewerking van de onderliggende gegevens als een IBindingList. In de volgende tabel worden enkele van deze leden beschreven.

Lid Beschrijving
eigenschap List Hiermee haalt u de lijst op die het resultaat is van de evaluatie van de DataSource of DataMember eigenschappen.
AddNew methode Hiermee voegt u een nieuw item toe aan de onderliggende lijst. Van toepassing op gegevensbronnen die de IBindingList interface implementeren en het toevoegen van items toestaan (dat wil gezegd, de AllowNew eigenschap is ingesteld op true).

Aangepast item maken

U kunt de AddingNew gebeurtenis afhandelen om uw eigen logica voor het maken van items op te geven. De AddingNew gebeurtenis treedt op voordat een nieuw object wordt toegevoegd aan de BindingSource. Deze gebeurtenis wordt gegenereerd nadat de AddNew methode is aangeroepen, maar voordat het nieuwe item wordt toegevoegd aan de onderliggende lijst. Door deze gebeurtenis af te handelen, kunt u aangepast gedrag voor het maken van items opgeven zonder dat deze is afgeleid van de BindingSource klasse. Voor meer informatie, zie Hoe: Item Toevoeging Aanpassen met de Windows Forms BindingSource.

Aanmaken transactie-item

Het BindingSource onderdeel implementeert de ICancelAddNew interface, waarmee transactionele items kunnen worden gemaakt. Nadat een nieuw item voorlopig is gemaakt met behulp van een aanroep naar AddNew, kan de toevoeging op de volgende manieren worden doorgevoerd of teruggedraaid:

  • Met EndNew de methode wordt de in behandeling zijnde toevoeging expliciet doorgevoerd.

  • Als u een andere verzamelingsbewerking uitvoert, zoals een invoeging, verwijdering of verplaatsing, wordt de in behandeling zijnde toevoeging impliciet doorgevoerd.

  • De CancelNew-methode zal de voorgenomen toevoeging terugdraaien als de methode nog niet is doorgevoerd.

Ondersteuning voor IEnumerable

Het BindingSource onderdeel maakt bindingsbesturingselementen mogelijk voor IEnumerable gegevensbronnen. Met dit onderdeel kunt u verbinding maken met een gegevensbron, zoals een System.Data.SqlClient.SqlDataReader.

Wanneer een IEnumerable gegevensbron aan de BindingSource component wordt toegewezen, creëert de BindingSource een IBindingList en voegt het de inhoud van de IEnumerable gegevensbron toe aan de lijst.

ondersteuning voor Design-Time

Sommige objecttypen kunnen niet worden gemaakt tijdens het ontwerp, zoals objecten die zijn gemaakt op basis van een fabrieksklasse of objecten die worden geretourneerd door een webservice. Soms moet u uw besturingselementen soms binden aan deze typen tijdens het ontwerp, ook al is er geen object in het geheugen waarmee uw besturingselementen kunnen worden verbonden. U kunt bijvoorbeeld de kolomkoppen van een DataGridView bedieningselement voorzien van labels met de namen van de publieke eigenschappen van uw aangepaste type.

Ter ondersteuning van dit scenario ondersteunt het BindingSource onderdeel binding met een Type. Wanneer u een Type aan de DataSource eigenschap toewijst, maakt het BindingSource component een lege BindingList<T> met Type items. Alle besturingselementen die u vervolgens aan het BindingSource onderdeel bindt, worden gewaarschuwd voor de aanwezigheid van de eigenschappen of het schema van uw type tijdens het ontwerp of tijdens runtime. Zie Instructies voor meer informatie : Een Besturingselement voor Windows-formulieren verbinden met een type.

Statische ListBindingHelper-methoden

De System.Windows.Forms.BindingContext, System.Windows.Forms.CurrencyManager, en BindingSource-typen delen gemeenschappelijke logica voor het genereren van een lijst uit een DataSource/DataMember-paar. Daarnaast wordt deze algemene logica openbaar gemaakt voor gebruik door auteurs van besturingselementen en andere derden in de volgende static methoden:

Sorteren en filteren met de IBindingListView-interface

Het BindingSource onderdeel implementeert de IBindingListView interface, die de IBindingList interface uitbreidt. Het IBindingList biedt sorteren van één kolom en het IBindingListView biedt geavanceerde sortering en filtering. Met IBindingListView, kunt u items in de gegevensbron sorteren en filteren, als de gegevensbron ook een van deze interfaces implementeert. Het BindingSource onderdeel biedt geen referentie-implementatie van deze leden. In plaats daarvan worden oproepen doorgestuurd naar de onderliggende lijst.

In de volgende tabel worden de eigenschappen beschreven die u gebruikt voor sorteren en filteren.

Lid Beschrijving
eigenschap Filter Als de gegevensbron een IBindingListViewis, kunt u de filteruitdrukking ophalen of instellen die wordt gebruikt om te bepalen welke rijen worden weergegeven.
eigenschap Sort Als de gegevensbron een IBindingListis, wordt een kolomnaam opgehaald of ingesteld die wordt gebruikt voor het sorteren en sorteren van ordergegevens.

– of –

Als de gegevensbron een IBindingListView is en ondersteuning biedt voor geavanceerde sortering, worden meerdere kolomnamen en sorteervolgorde opgehaald die worden gebruikt voor de sortering.

Integratie met BindingNavigator

U kunt het BindingSource onderdeel gebruiken om elk Besturingselement van Windows Forms te binden aan een gegevensbron, maar het BindingNavigator besturingselement is speciaal ontworpen om met het BindingSource onderdeel te werken. Het BindingNavigator bedieningselement biedt een gebruikersomgeving voor het beheren van het huidige item van het BindingSource onderdeel. Standaard biedt het BindingNavigator controle knoppen die overeenkomen met de navigatiemethoden op het BindingSource-onderdeel. Voor meer informatie, zie Hoe te: Navigeren in gegevens met het Windows Forms BindingNavigator-besturingselement.

Zie ook