Wofür DataSet UND BindingSource?

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Marcus Gräfe.

    Wofür DataSet UND BindingSource?

    Ich frage mich gerade, warum es das BindingSource-Objekt gibt, wenn ich ein Control (z. B. eine ListBox) offenbar auch direkt an ein DataSet-Objekt binden kann.

    Kann mir einer in Kurzform sagen, warum es das BS-Objekt gibt?

    Im Internet steht, dass es für das Binden an Controls ist, aber wie gesagt, das geht doch auch ohne. Sollte man immer mit beiden arbeiten oder ist es manchmal unnötig?
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum
    @Marcus Gräfe Die BindingSource sorgt dafür, dass auch "inkompatible" Daten drangebunden werden können, z.B. Enum-String-Dictionaries, wo Du dann einen DisplayMember und einen ValueMember hast, um dem einen das Enum (ValueMember) und dem anderen den Namen (DisplayMember) zuweisen kannst.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ich arbeite z.B. effektiv gar nicht mehr mit nem tDS, sondern mach z.Zt. alles mit eigenen Klassen. Die koppel ich an BindingSources und kann dann über DGV, ComboBox und Co. ziemlich effizient meine Klasseninstanzen manipulieren.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    ich arbeite am liebsten mit tDS, weil das Filterung und Sortierung so nett unterstützt.

    Eine BindingSource kann man dann verstehen als eine Abfrage (Query) an eine DataTable - und zusätzlich ist sie eine Currency-Verwaltung (also Verwaltung des aktuell angewählten Datensatzes).
    Ersteres geht verloren, wenn man mit selbstgebastelten Klassen arbeitet, letzteres geht verloren, wenn man seine Controls nicht über BindingSources bindet.

    BindingSource.Filter bestimmt dabei die Where-Klausel, und BindingSource.Sort den OrderBy-Abschnitt.



    Ausserdem gibt die BindingSource.Current-Property den aktuell angewählten Datensatz an (egal, ob im DGV, in List/Combo-Box oder gar im BindingNavigator angewählt).
    Über BindingSource.Position kann ich den aktuell angewählten Datensatz auch codeseitig bestimmen.



    Ausserdem kann man eine BindingSource als DataSource einer anderen BindingSource verwenden. Das ist der Standard-Weg, wie man einen Parent-Child-View erzeugt, also eine View auf über- und unter-geordnete Tabelle, und von der untergeordneten Tabelle zeigt man nur die Datensätze an, die auf den aktuell angewählten übergeordneten Datensatz verweisen.
    Zum Beispiel links hat man aus den Kategorien meinetwegen "Milchprodukte" ausgewählt, und rechts bekommt man dann alle Artikel angezeigt, die ein Milchprodukt sind (Käse, Joghurt, Butter,...).



    Ach - und BindingSource ist dafür designed, dass man im Form-Designer damit arbeitet - Code braucht man - für Standardfälle - garnet zu schreiben, bzw. in Code formuliert man dann quasi "Sonderwünsche".
    Ein Riesen-Riesen-Plus ist, dass wenn man mit BindingSources designed, dass man dann auch die Spalten eines DGVs designen (im Form-Designer) kann (Spalten ausblenden, Spalten-Reihenfolge, Überschriften, SchriftTyp, SortierVerhalten, Hintergrundfarben, Resizing-Verhalten,...).
    Eine ansprechende DGV-Optik per Code hinzufummeln - da ist man schnell bei > 100 Zeilen Code.



    Ich empfehle immer beides: tDS und BindingSource, weil das ist ausgezeichnet aufeinander abgestimmt, und enorm leistungsfähig.
    Von einem Mischmasch (mal mit BindingSource binden, mal ohne) tätich sehr abraten. Da muss man mit zwei verschiedenen Ansätzen Erfahrungen sammeln (von denen einer weniger leistungsfähig ist), und wenn man die Funktionalität verstehen will, muss man an mehreren Stellen gucken.

    Wenn wolle gugge vier Views-Videos - das zeigt die gängigsten Arten von Views - und die kann man auch miteinander kombinieren, oder sich noch andere Dinge ausdenken.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „ErfinderDesRades“ ()

    Danke, für mich spricht nun alles für BindingSource. ;)

    Allein das hier reicht mir eigentlich als Argument:

    Ein Riesen-Riesen-Plus ist, dass wenn man mit BindingSources designed, dass man dann auch die Spalten eines DGVs designen (im Form-Designer) kann
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum