Sortieren einer JoiningView in einer DatagridView

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

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von michivandersar.

    Sortieren einer JoiningView in einer DatagridView

    Hallo zusammen,

    Ich bin daran, mir eine Übersicht zu programmieren, welche Songs auf welcher meiner selbst gebrannter CD's ist. Dabei sollen Titelnamen, Interpreten, OriginalAlben, CD und Tracknummer angezeigt werden.

    Dafür habe ich mir ein kleines Dataset gebaut und mit Hilfe der JoiningView (die vier Views auf Video) eine schöne Übersicht erhalten.

    Nun ist es so, dass ich zwei Tabellen habe, eine für die Tracks und eine für die CD's. Wenn ich nun nach der Spalte CD sortieren will, sortiert er die CD Spalte nach dem ValueMember und nicht nach dem DisplayMember, also er sortiert nach der ID und nicht dem angezeigten Wert. Wie kann ich die Tabelle nach dem angezeigten Wert, oder besser noch nach einem dritten Wert in der CD-Tabelle, sortieren?

    Um es mal in SQL auszudrücken:
    Anzeigen: select c.name, t.titel, t.interpret, t.album, t.tracknummer from track as t inner join cd as c on c.id = t.cd
    Sortierung IST: order by c.id (ValueMember)
    Sortierung SOLL: order by c.name (DisplayMember)
    Sortierung PERFEKT: order by c.nummer (Dritte Spalte der CD-Tabelle in der die Sortierung festgelegt ist/wird)

    Wie krieg ich das hin? Im Internet habe ich dazu leider nichts gefunden und auch beim durchschauen der Properties und Funktionen bin ich nicht fündig geworden =/

    Im Anhang habe ich noch ein paar Screenshots um das Problem zu veranschaulichen.

    Vielen Dank schon mal im Voraus :D
    Bilder
    • data.xsd.png

      5,65 kB, 530×188, 179 mal angesehen
    • datagridview.png

      4,13 kB, 966×415, 162 mal angesehen
    • datagridview-column_cd.png

      21,27 kB, 810×485, 181 mal angesehen
    • datagridview-data_properties.png

      3,74 kB, 428×131, 161 mal angesehen
    • datagridview-ordered-by-cd.png

      35,13 kB, 962×410, 174 mal angesehen
    ja, das ist ein Manko. In der ChildTable sind nur die ForeignKeys auf die CDs enthalten, nicht die CD-Namen, und deshalb sortiert er die ForeignKeys.
    Man erhält immerhin eine Gruppierung nach CD-Namen, aber keine alphabetische Sortierung.

    Ein kleiner Workaround ist, eine berechnete Spalte in die Tracks einzufügen, die über die ParentRelation die CD-Namen anzeigt. Das ist im Grunde eine andere Art, einen JoiningView zu basteln, und diese gejointen Namen sind dann auch Readonly, aber immerhin die sortieren sich richtig.

    gugge DataExpressions: Filter und berechnete Spalten im Dataset

    ErfinderDesRades schrieb:

    gugge DataExpressions: Filter und berechnete Spalten im Dataset

    Super, so hats geklappt :D

    Ich habe in der Tracktabelle eine weiter Spalte angelegt welche auf die Sortierspalte der CDTabelle zeigt.
    Nun sortiere ich diese Spalte der Datagridview selbst und sage dort der BindingSource dass er nach der neuen Spalte soriteren soll :D

    Vielen Dank für die Hilfe!