Mehrere Zeilen über DataGridView aus Datatable löschen

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von BillFrankShepard.

    Mehrere Zeilen über DataGridView aus Datatable löschen

    Hallo zusammen,

    Mein Problem ist folgendes: Ich hab ein Datatable an ein DataGridView gebunden. Jetzt möchte ich dem Nutzer die Möglichkeit geben mehrere Zeilen im Datagridview auszuwählen und diese dann per Klick im DataTable zu löschen.
    Mein letzter Ansatz war immerhin ein kleinwenig erfolgreich, mehr aber auch nicht;

    VB.NET-Quellcode

    1. DataTableBindingSource.Removecurrent


    Jetzt wird im DataGridView der erste Eintrag zwar entfernt, jedoch nicht wie gewünscht die selektierten Zeilen.
    Kann mir hier vielleicht jemand den Schubs in die Richtige Richtung geben?

    Lg und Danke
    Hi,
    zunächst solltest du den Inhalt nicht im DataGridView löschen


    Dumme Frage: Mach ich das überhaupt wenn ich es über

    VB.NET-Quellcode

    1. DataTableBindingsource.RemoveCurrent


    lösche?
    Eine Bindingsource kapselt die Daten doch an ein Formular. In dem Fall lösche ich doch dann gar nichts im DataGridView sondernd in meinem Datatable. Korrigier mich bitte wenn ich da was falsch verstanden habe.

    Um Row aus der DataTable zu löschen brauchst du die Indexes der selektierten Items.


    Ich hab jetzt versucht über

    VB.NET-Quellcode

    1. DataSet1.DataTable.Rows.IndexOf()

    an die Indizes ran zu kommen, aber irgendwie klappt das nicht so, wie ich es mir vorstelle.
    Hallo VB1963,

    VB.NET-Quellcode

    1. For i = meinDGV.SelectedRows.Count - 1 To 0 Step -1
    2. meineBindingSource.RemoveAt(meinDGV.SelectedRows(i).Index)
    3. Next


    Danke für den Code klappt einwandfrei. :thumbup:
    Nur zum Verständnis:

    VB.NET-Quellcode

    1. i = meinDGV.SelectedRows.Count - 1 To 0 Step -1


    Was genau wird hier gemacht?

    LG und Danke noch ein Mal!
    Ganz einfach:
    Deine ausgewählten DGV-Zeilen werden in der 0-basierten (daher .Count - 1) SelectedRows- Auflistung gelistet.
    Diese Liste läufst du vom Ende bis zum Anfang durch und löscht nacheinander die Zeilen.
    Vom Ende weg deshalb, weil sonst eine ArgumentOutOfRangeException geworfen würde.
    Mehrere Elemente werden prinzipiell vom Ende weg aus einer Auflistung gelöscht!

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