Megosztás a következőn keresztül:


BindingSource összetevőarchitektúra

A BindingSource összetevővel univerzálisan összekapcsolhatja az összes Windows Forms-vezérlőt az adatforrásokkal.

A BindingSource összetevő leegyszerűsíti a vezérlők adatforráshoz való kötésének folyamatát, és az alábbi előnyöket biztosítja a hagyományos adatkötéssel szemben:

  • Lehetővé teszi a tervezési idő üzleti objektumokhoz való kötését.

  • Enkapszulálja a CurrencyManager funkciókat, és a CurrencyManager eseményeket elérhetővé teszi a tervezéskor.

  • Egyszerűbben hozhat létre olyan listát, amely támogatja a IBindingList felületet azáltal, hogy listamódosítási értesítést küld az olyan adatforrásokhoz, amelyek natív módon nem támogatják a listaváltoztatási értesítéseket.

  • Bővíthetőségi pontot biztosít a IBindingList.AddNew metódushoz.

  • Indirekt szintet biztosít az adatforrás és a vezérlő között. Ez a közvetettség akkor fontos, ha az adatforrás futásidőben változhat.

  • Együttműködik más adatokkal kapcsolatos Windows Forms-vezérlőkkel, különösen a BindingNavigator és a DataGridView vezérlőkkel.

Ezen okok miatt a BindingSource összetevő az elsődleges módszer a Windows Forms-vezérlők adatforrásokhoz való kötésére.

BindingSource-szolgáltatások

A BindingSource összetevő számos funkciót biztosít az adatokhoz kötött vezérlőkhöz. Ezekkel a funkciókkal a legtöbb adatkötési forgatókönyvet szinte kódolás nélkül implementálhatja.

A BindingSource összetevő ezt úgy valósítja meg, hogy konzisztens felületet biztosít a különböző típusú adatforrások eléréséhez. Ez azt jelenti, hogy ugyanazt az eljárást használja bármilyen típushoz való kötéshez. Csatolhatja például a DataSource tulajdonságot egy DataSet vagy egy üzleti objektumhoz, és mindkét esetben ugyanazt a tulajdonságkészletet, metódust és eseményt használja az adatforrás módosításához.

A BindingSource összetevő által biztosított konzisztens interfész jelentősen leegyszerűsíti az adatok vezérlőkhöz való kötésének folyamatát. A változásértesítést biztosító adatforrástípusok esetében a BindingSource összetevő automatikusan közli a vezérlő és az adatforrás közötti változásokat. Olyan adatforrástípusok esetén, amelyek nem nyújtanak változásértesítést, a rendszer olyan eseményeket biztosít, amelyek lehetővé teszik a változásértesítések küldését. Az alábbi lista az BindingSource összetevő által támogatott funkciókat mutatja be:

Közvetettség

A BindingSource összetevő a vezérlő és az adatforrás közötti közvetettséget biztosítja. A vezérlő közvetlenül adatforráshoz történő kötése helyett, a vezérlőt egy BindingSource-hoz köti, és az adatforrást a BindingSource összetevő DataSource tulajdonságához kapcsolja.

Ezzel a közvetettségi szinttel a vezérlőkötés alaphelyzetbe állítása nélkül módosíthatja az adatforrást. Ez a következő képességeket nyújtja:

Pénznemkezelés

A BindingSource összetevő implementálja a ICurrencyManagerProvider felületet a pénznemkezelés kezeléséhez. A ICurrencyManagerProvider felületen elérheti egy BindingSourcepénznemkezelőjét, valamint egy másik BindingSource-t is, amely ugyanahhoz a DataMember-hoz van kötve.

A BindingSource összetevő CurrencyManager funkciókat foglal magában, és elérhetővé teszi a leggyakoribb CurrencyManager tulajdonságokat és eseményeket. Az alábbi táblázat a pénznemkezeléssel kapcsolatos néhány tagot ismerteti.

CurrencyManager tulajdonság Lekéri a pénznemkezelőt a BindingSource.

GetRelatedCurrencyManager metódus Ha a megadott adattaghoz egy másik BindingSource kötve van, lekéri a pénznemkezelőt.

Current tulajdonság Lekéri az adatforrás aktuális elemét.

Position tulajdonság Lekéri vagy beállítja az aktuális pozíciót az alapul szolgáló listában.

EndEdit metódus Függőben lévő módosításokat alkalmaz az alapul szolgáló adatforrásra.

CancelEdit metódus megszakítja az aktuális szerkesztési műveletet.

Adatforrás listaként

A BindingSource összetevő implementálja a IBindingListView és ITypedList interfészeket. Ezzel az implementációval a BindingSource összetevőt is használhatja adatforrásként, külső tároló nélkül.

Amikor a BindingSource összetevő egy adatforráshoz van csatolva, az adatforrást listaként teszi elérhetővé.

A DataSource tulajdonság több adatforrásra is beállítható. Ezek közé tartoznak a típusok, objektumok és típusok listája. Az eredményként kapott adatforrás listaként lesz közzétéve. Az alábbi táblázat néhány gyakori adatforrást és az eredményként kapott listaértékelést mutatja be.

DataSource tulajdonság Találatok listázása
Null hivatkozás (Nothing a Visual Basicben) Üres IBindingList objektumokból. Ha hozzáad egy elemet, a lista a hozzáadott elem típusához lesz adva.
Egy null hivatkozás (Nothing a Visual Basicben) DataMember beállítással. Nem támogatott; hibát okoz ArgumentException.
Nem listatípus vagy "T" típusú objektum "T" típusú üres IBindingList.
Tömbpéldány Az IBindingList, amely tartalmazza a tömbelemeket.
IEnumerable példány A IBindingList, amely tartalmazza a IEnumerable elemeket
Példány, amely tartalmazza a "T" típusú listát A IBindingList példány, amely "T" típust tartalmaz.

Emellett DataSource más listatípusokra is beállíthatók, például IListSource és ITypedList, és a BindingSource megfelelően kezeli őket. Ebben az esetben a listában szereplő típusnak paraméter nélküli konstruktort kell tartalmaznia.

BindingSource IBindingList -ként

A BindingSource összetevő lehetővé teszi a tagok számára a mögöttes adatok IBindingListként való elérését és manipulálását. Az alábbi táblázat néhány tagot ismertet.

Tag Leírás
List ingatlan Megkapja a DataSource vagy DataMember tulajdonságok kiértékelése által eredményezett listát.
AddNew módszer Új elemet ad hozzá az alapul szolgáló listához. Azokra az adatforrásokra vonatkozik, amelyek implementálják a IBindingList felületet, és engedélyezik az elemek hozzáadását (azaz a AllowNew tulajdonság értéke true).

Egyéni elem létrehozása

A AddingNew eseményt saját elem-létrehozási logikával kezelheti. A AddingNew esemény azelőtt következik be, hogy egy új objektumot hozzáadnak a BindingSource-hez. Az esemény a AddNew metódus meghívása után, de még mielőtt az új elemet hozzáadnák a listához, vált ki. Az esemény kezelésével egyéni elemlétrehozási viselkedést adhat meg anélkül, hogy az BindingSource osztályból kellene származtatnia. További információért lásd: Hogyan: Az elemek hozzáadásának testreszabása a Windows Forms BindingSource segítségével.

Tranzakciós elem létrehozása

A BindingSource összetevő implementálja a ICancelAddNew felületet, amely lehetővé teszi a tranzakciós elemek létrehozását. Ha ideiglenesen létrehoz egy új elemet egy AddNewhívásával, a hozzáadás véglegesítése vagy visszaállítása a következő módokon lehetséges:

  • A EndNew metódus explicit módon véglegesíti a függőben lévő hozzáadást.

  • Ha egy másik gyűjteményműveletet hajt végre, például beszúrást, eltávolítást vagy áthelyezést, implicit módon véglegesíti a függőben lévő hozzáadást.

  • A CancelNew módszer visszaállítja a függőben lévő hozzáadást, ha a módszert még nem véglegesítették.

IEnumerable-támogatás

A BindingSource komponens lehetővé teszi a vezérlők és az IEnumerable adatforrások összekapcsolását. Ezzel az összetevővel kapcsolódhat egy adatforráshoz, például egy System.Data.SqlClient.SqlDataReader.

Ha egy IEnumerable adatforrás van hozzárendelve a BindingSource összetevőhöz, a BindingSource létrehoz egy IBindingList, és hozzáadja a IEnumerable adatforrás tartalmát a listához.

Design-Time támogatás

Bizonyos objektumtípusok nem hozhatók létre tervezéskor, például gyári osztályból létrehozott objektumok vagy webszolgáltatás által visszaadott objektumok. Előfordulhat, hogy a tervezéskor a vezérlőket ezekhez a típusokhoz kell kötnie, még akkor is, ha nincs olyan objektum a memóriában, amelyhez a vezérlők kapcsolódhatnak. Előfordulhat például, hogy fel kell címkéznie egy DataGridView vezérlőelem oszlopfejléceit az egyéni típus nyilvános tulajdonságainak nevével.

Az ehhez a forgatókönyvhöz való támogatás érdekében a BindingSource összetevő támogatja a Type-hez való kapcsolódást. Amikor a(z) Type a DataSource tulajdonsághoz van rendelve, a BindingSource összetevő létrehozza az üres BindingList<T>-at a(z) Type elemekből állóan. A BindingSource összetevőhöz később kötődő vezérlők a tervezéskor vagy futásidőben értesítést kapnak a típus tulajdonságainak vagy sémáinak meglétéről. További információért lásd: Hogyan kössünk egy Windows Forms vezérlőt egy típushoz.

Statikus ListBindingHelper metódusok

A System.Windows.Forms.BindingContext, System.Windows.Forms.CurrencyManagerés BindingSource típusok közös logikával hoznak létre listát egy DataSource/DataMember párból. Emellett ez a közös logika nyilvánosan elérhető az ellenőrző szerzők és más harmadik felek számára a következő static módszerekben:

Rendezés és szűrés az IBindingListView felülettel

A BindingSource összetevő implementálja a IBindingListView felületet, amely kibővíti a IBindingList felületet. A IBindingList egyoszlopos rendezést, a IBindingListView pedig speciális rendezést és szűrést kínál. A IBindingListViewsegítségével rendezheti és szűrheti az adatforrás elemeit, ha az adatforrás ezen felületek egyikét is megvalósítja. A BindingSource összetevő nem nyújt referencia-implementációt ezeknek a tagoknak. Ehelyett a rendszer a hívásokat a mögöttes listára továbbítja.

Az alábbi táblázat a rendezéshez és szűréshez használt tulajdonságokat ismerteti.

Tag Leírás
Filter ingatlan Ha az adatforrás egy IBindingListView, lekéri vagy beállítja a megtekintett sorok szűréséhez használt kifejezést.
Sort ingatlan Ha az adatforrás egy IBindingList, lekéri vagy beállítja a rendezéshez használt oszlopnevet és a rendezési sorrendet.

-vagy-

Ha az adatforrás egy IBindingListView, és támogatja a speciális rendezést, több oszlopnevet kap a rendezéshez, valamint a rendezés sorrendjét is.

Integráció a BindingNavigator használatával

A BindingSource összetevővel bármilyen Windows Forms-vezérlőt egy adatforráshoz köthet, de a BindingNavigator vezérlő kifejezetten az BindingSource összetevővel való együttműködésre lett kialakítva. A BindingNavigator vezérlő felhasználói felületet biztosít a BindingSource összetevő aktuális elemének vezérléséhez. Alapértelmezés szerint a BindingNavigator vezérlő olyan gombokat biztosít, amelyek megfelelnek a BindingSource összetevő navigációs módszereinek. További információ: Útmutató: Adatok navigálása a Windows Forms BindingNavigator vezérlővel.

Lásd még