Mit BindingSource Daten arbeiten

  • VB.NET
  • .NET 4.5

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Volkmar.

    Mit BindingSource Daten arbeiten

    Guten Tag, ich habe mein Thema eben schoneinmal in einem falschen Unterforum gepostet in dem es erst Freischaltung braucht. Da war ich wohl vollkommen falsch :o

    Also ich habe noch Fragen zu meinem Dataset. Ich bin schon weiter gekommen mein Dataset in einem Datagridview anzuzeigen und die jeweiligen Werte kann ich filtern und annavigieren mittels bindingsource.movenext usw. Die Bindingsource ist ja sozusagen jeweils eine Zeile die ausgelesen wird. Kann ich den Inhalt der "Bindingsource Zeile" anzeigen / weiter verarbeiten. So nach dem Motto eine Messagebox ploppt auf wenn eine spalte der Bindingsource einen bestimmten Inhalt aufweist o.ä. oder wenn ich einen Wert an einer anderen Stelle im Code weiterverarbeiten will...

    Und generell habe ich Probleme damit Datensätze Auszulesen und anzeigen zu lassen, zum Beispiel in einer Tabelle des Datasets den Wert einer Spalte, bei der die Zeile die ID xy hat. oder ähnlich.

    Ich habe schon einige Dataset Erklärungen von "Erfinder des Rades" durchgelesen aber an diesen zwei Punkten hapert es noch. Wäre schön wenn mir da jemand auf die Sprünge helfen würde...

    Vielen Dank soweit schonmal

    Grüße

    Philipp schrieb:

    Und generell habe ich Probleme damit Datensätze Auszulesen und anzeigen zu lassen, zum Beispiel in einer Tabelle des Datasets den Wert einer Spalte, bei der die Zeile die ID xy hat. oder ähnlich.
    Du meinst damit besondere Datenzeilen anzeigen zu lassen, die bestimmte Kriterien erfüllen...
    Schaue dir die Filter-Property der BS einmal dazu an.
    Bevor EdR es tut, stell ich mal klar. Davon ausgehend, dass die DataSource der BindingSource (BS) eine Tabelle ist:

    Philipp schrieb:

    Die Bindingsource ist ja sozusagen jeweils eine Zeile die ausgelesen wird.
    Nein. Die BindingSource ist quasi ein Bindeglied zwischen der DataSource-Tabelle und CEs. Damit hat sie Zugriff zu allen DataSource-Tabellenzeilen, siehe BindingSource.List-Property. BindingSource.Current hingegen ermöglicht Zugriff auf die aktuell ausgewählte Zeile der DataSource-Tabelle. Dadurch sichtbar, dass, wenn man die BS an ein DGV knüpft und im DGV eine Zeile wählt, dies sich in BindingSource.Position und natürlich BindingSource.Current widerspiegelt. Und vice versa.

    Philipp schrieb:

    Kann ich den Inhalt der "Bindingsource Zeile" anzeigen / weiter verarbeiten.
    Da ist zwar kein Fragezeichen am Ende, aber ich tippe darauf, dass das eine Frage ist. Ja, kannst Du. Entweder formulartechnisch, indem Du ein CE per Complex Binding an die BS knüpfst, also z.B. ein editierbares DGV. Da kannst Du dann rumeditieren wie Du willst (naja, Constrains beachten solltest Du schon ;) ). Per Simple Binding, indem Du z.B. eine String-Spalte der BS-DataSource-Tabelle an eine TextBox bindest. So kannst Du dann jenen String-Wert der Zeile editieren, die von BindingSource.Current repräsentiert wird. Oder dann eben per Code mit dem berühmt-berüchtigten Doppelcast, den viele hier vom EdR kennengelernt haben:

    VB.NET-Quellcode

    1. Dim CurrentDataRow = DirectCast(DirectCast(YourBindingSource.Current, DataRowView).Row, DeinTds.DeineDataRow)
    2. CurrentDataRow.Name = "Purzelbaum" 'Falls die DataTable eine String-Column namens Name hat

    Falls Du einen bestimmten Wert in der BS bzw. in der DataTable finden willst, z.B. klassisch per For-Each oder mit LINQ:

    VB.NET-Quellcode

    1. Dim RowYouLookFor = DeinTds.DeineDataTable.FirstOrDefault(Where(Function(x) x.Name = "Purzelbaum"))
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.
    Allein für die Engelsdgeduld, mit der EdR immer wieder die Sache mit dem Doppelcast erklärt und erklärt und erklärt usw., müsste man ihm hier ein Denkmal errichten. Die Anzahl der User, denen er hier damit auf den richtigen Weg geholfen hat - mir auch - dürfte Legion sein. :)