Datagridview-Sortierung mit gebundener Datatable

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Datagridview-Sortierung mit gebundener Datatable

    Hallo!
    Hilfe!

    Ich bin dabei von Access (DAO) nach SQLite zu wechseln. Derer Gründe gibt es viele ...

    Ich habe nun ein Datagridview (DGV) an eine DataTable (DT) gebunden. Wenn ich das DGV nun umsortiere und danach einen neuen Datensatz (DT.Rows.Add()) anfüge, wird die neue Zeile der DT irgendwo im DGV eingefügt, aber nicht, wie erforderlich an der letzten Position des DGV.

    Das Sortieren der DT analog zur Sortierung der DGV brachte keinen Erfolg, da nun bei DT.Rows.Add() im DGV gar keine Zeile mehr angefügt wird.
    Die neue Zeile wird nicht "irgendwo" eingefügt, sondern genau da, wo sie hingehört - entsprechend der Sortierungs-Einstellung.

    Dat works as designed.

    Ist manchmal bisserl blöd. Man bräuchte manchmal eine BindingSource, die nur einmal sortiert, und dann neue Datensätze nicht mehr sortiert einfügt, sondern anhängt (die Sortierung also wieder kaputtmacht).
    Quasi eine BindingSource mit SortMode.OneShot oder sowas.
    Spannendes Thema. Das zu entwickeln wird aber paar Tage dauern.
    Dem würde ich grds. zustimmen ... allerdings werden zwei Datensätze nach Datum ASC geladen. Wenn ich nun über das DGV das Datum nach DESC umsortiere und dann einen neuen DS einfüge, wird die neue Zeile im DGV zwischen dem 1. und dem 2. DS, also mittig, eingefügt. Hierbei ist egal, welchen DS ich vorher im DGV angewählt habe. Eigentlich müsste die neue Zeile aber, je nach Sortierung, entweder ganz oben oder ganz unten eingefügt werden.
    Dieses Verhalten zeigt das Ganze allerdings auch, wenn nach anderen Spalten umsortiert wurde ...

    DaKookmaster schrieb:

    allerdings werden zwei Datensätze nach Datum ASC geladen
    verstehe ich nicht.
    Was bedeutet "Datensatz nach ASC laden"?


    DaKookmaster schrieb:

    wird die neue Zeile im DGV zwischen dem 1. und dem 2. DS, also mittig, eingefügt. Hierbei ist egal, welchen DS ich vorher im DGV angewählt habe. Eigentlich müsste die neue Zeile aber, je nach Sortierung, entweder ganz oben oder ganz unten eingefügt werden.
    Dieses Verhalten zeigt das Ganze allerdings auch, wenn nach anderen Spalten umsortiert wurde ...
    Noch einmal: Der neue Datensatz kommt da hin, wo er nach Sortier-Einstellung hingehört. Wenn er zwischen 1. und 2. DS gehört, dann kommt er da auch hin.
    Und wenn etwas zwischen zwei anderen gehört, dann ist ja egal, ob auf- oder absteigend sortiert - dazwischen ist dazwischen.



    Noch ein Hinweis, weil du von Datumsen redest: Wird für das Datum ein falscher Datentyp verwendet - etwa String, so werden die Datumse nicht in der Zeitachse sortiert, sondern als Texte.
    Etwa "01.01.2023" ist - als Text gesehen - kleiner als "24.03.2020".
    Falsch gewählte Datentypen sind immer für solche Verwirrungen gut.