none
wpf datagrid sortieren RRS feed

  • Frage

  • Hallo,

    ich nutze ein wpf-datagrid, um die Daten eines Dataset darzustellen und Datensätze auszuwählen.
    Um den richtigen Datensatz zu erhalten benötige ich seine Zeilennummer (row).
    Solange ich die columns nicht sortiere, greift selectedindex auch auf den richtigen Datensatz zu.
    Werden die Spalten jedoch nach Spalte sortiert, gibt selectedindex immer noch den Wert der jeweiligen Datagrid-Zeile zurück,
    ich benötige allerdings die richtige Datensatznummer.
    Hat jemand eine Idee, wie man das realisieren kann?

    Klaus
    Montag, 4. April 2011 09:36

Antworten

  • Schau dir mal die CollectionView an, wenn du diese an dein DataGrid bindest, hast du immer den richtigen Index, egal ob sortiert oder gefiltert wird...

    http://msdn.microsoft.com/en-us/library/system.windows.data.collectionview.aspx

    http://www.wpftutorial.net/DataViews.html




    Dienstag, 5. April 2011 07:04
    Beantworter
  • Danke für den Tipp, ich habe das Problem zwar inzwischen anders gelöst.

    Dein Weg ist jedoch der elegantere und programmtechnisch bessere.

    Die Collectionview-Variante werde ich gleich mal umsetzen.

    Die Lösung füge ich dann hier ein, wird sicherlich auch für andere hilfreich sein.

    Meine Lösung war diese:

    Da mein Dataset ein ID-Feld hat, suche ich nach diesem und erhalte so die rownummer des Datensatzes.

    Mit dieser kann ich dann den richtigen Datensatz ermitteln.

     

    Soll Deine Lösung so funktionieren? :

     

    myCollectionView = CType(CollectionViewSource.GetDefaultView(DataGrid1.DataContext), CollectionView)
    DataGrid1.DataContext = myCollectionView

     

    Ich habe viele Jahre mit VB-Classic gearbeitet und vieles ist halt Neuland.

    Da muß man - insbesondere bei wpf - umdenken.

     

    Danke für Deine Hilfe

     

    Klaus

     

     


    Dienstag, 5. April 2011 08:25

Alle Antworten

  • Schau dir mal die CollectionView an, wenn du diese an dein DataGrid bindest, hast du immer den richtigen Index, egal ob sortiert oder gefiltert wird...

    http://msdn.microsoft.com/en-us/library/system.windows.data.collectionview.aspx

    http://www.wpftutorial.net/DataViews.html




    Dienstag, 5. April 2011 07:04
    Beantworter
  • Danke für den Tipp, ich habe das Problem zwar inzwischen anders gelöst.

    Dein Weg ist jedoch der elegantere und programmtechnisch bessere.

    Die Collectionview-Variante werde ich gleich mal umsetzen.

    Die Lösung füge ich dann hier ein, wird sicherlich auch für andere hilfreich sein.

    Meine Lösung war diese:

    Da mein Dataset ein ID-Feld hat, suche ich nach diesem und erhalte so die rownummer des Datensatzes.

    Mit dieser kann ich dann den richtigen Datensatz ermitteln.

     

    Soll Deine Lösung so funktionieren? :

     

    myCollectionView = CType(CollectionViewSource.GetDefaultView(DataGrid1.DataContext), CollectionView)
    DataGrid1.DataContext = myCollectionView

     

    Ich habe viele Jahre mit VB-Classic gearbeitet und vieles ist halt Neuland.

    Da muß man - insbesondere bei wpf - umdenken.

     

    Danke für Deine Hilfe

     

    Klaus

     

     


    Dienstag, 5. April 2011 08:25
  • Teste die Bindung mal wie folgt:

    myCollectionView = CollectionViewSource.GetDefaultView(<DataTable>); ' => hier musst du die DataTable aus dem DataSet zuweisen.
    DataGrid1.ItemSource = myCollectionView

    Dienstag, 5. April 2011 14:37
    Beantworter