DataTable sortieren Tipp aus dem Internet

  • VB.NET
  • .NET (FX) 4.5–4.8

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

    DataTable sortieren Tipp aus dem Internet

    Hi,

    ich habe eine Frage zu Folgenden

    VB.NET-Quellcode

    1. Sortieren(mytable, "Spalte ASC")
    2. Private Sub Sortieren(ByVal Tabelle As DataTable, ByVal Sortstr As String)
    3. Dim dt As New DataTable()
    4. Tabelle.DefaultView.Sort = Sortstr
    5. dt = Tabelle.DefaultView.ToTable()
    6. Tabelle = dt
    7. End Sub


    Hier wird ja eigentlich die DataTable mytable mit einer neuen DataTable überschrieben. Aber bei mir bleibt die alte Sortierung in der Reihenstruktur erhalten.
    Also Reihe 1 wird durch das Sortieren an Stelle 52 geschoben, aber jetzt wird Reihe 52 mit Reihe 1 angesprochen. Das ist dann natürlich nur eine optische Sortierung. Kann man die Sortierung auch irgendwie real werden lassen?

    *Topic verschoben*

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    Du müsstest mit eine Schleife durchloopen und die Tabelle wirklich neu aufbauen.
    Aber auch vor dem Hintergrund, dass du demnächst stark typisierst arbeitest, oder stell dir vor du wolltest eine riesige Datenbank-Tabelle immer neu schreiben.
    Was passiert mit abhängigen Feldern anderer Tabellen?

    Also im Ernst, mach es typisiert und füge entsprechende Keys hinzu, mit denen du schneller sortierst, je nach Anwendungsfall nach verschiedenen Feldern.
    Mache die Abfragen so, dass du nur die Bereiche in der View hast, die su sehen willst, geht das sortieren nochmals schneller.
    und solche Tipps grassieren im Internet? Wo bist du denn unterwegs?

    Obwohl - wenn man der Methode einen Rückgabewert gäbe wärs ein lustiger Ansatz für höchst spezielle Spezial-Probleme. Man würde damit einen DataTable-Klon erstellen in einer bestimmten Sortierung.
    Aber realiter sind DataTable-Klone sehr heikel - weil die sind ja ausserhalb des Datasets. Dann hast du 2 DataTables:
    Eine im Dataset, und eine fährt sonstwo rum.
    Und erstere ist über DataRelions mit anderen Tabellen des Datasets verknüpft - der Klon ists aber sicher nicht.
    Und alld Databindings sind nachwievor an ersterer Tabelle angebunden.
    Wie gesagt: So wie gezeigt ists Quatsch, und wnn mans fixen täte wäre es ein skurrilles Spielzeug für Aufgaben, die ich mir erst noch einfallen lassen muss.

    Also versteh lieber Datenbänkerische Konzepte:

    Tabellen werden nicht sortiert - nicht in der Datenbank, nicht im Dataset.
    Im Gui arbeitet man nur mit DataViews - also Sichten auf DataTables.
    Gib dieser Sicht einen Sort-String, und sie ist sortiert.
    "ist sortiert" bedeutet, dass sie nicht nur sortiert ist, sondern dass auch Zufügungen an der richtigen Stelle auftauchen.

    BindingSource ist ein Wrapper um so eine Sicht.
    Setze BindingSource.Sort = "Spalte ASC" und gut ist.

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