Laden...

Zeile in WPF DataGrid sortieren

Erstellt von Jimmy99 vor 13 Jahren Letzter Beitrag vor 13 Jahren 5.039 Views
J
Jimmy99 Themenstarter:in
10 Beiträge seit 2011
vor 13 Jahren
Zeile in WPF DataGrid sortieren

Hallo zusammen,

gibt es eine Möglichkeit die Items in einer Zeile eines Datagrid's aufsteigend zu sortieren?
Die Spalten sollen dabei bestehen bleiben wie sie sind.

danke schonmal...

4.939 Beiträge seit 2008
vor 13 Jahren

Hallo,

meinst du das automatische Sortieren mittels der Spaltenüberschriften (Column Header)?
Dann einfach 'CanUserSortColumns' aktivieren, s.a. http://www.wpftutorial.net/DataGrid.html#columnFeatures

Ansonsten mußt du die Daten der 'ItemsSource' entsprechend sortieren.

J
Jimmy99 Themenstarter:in
10 Beiträge seit 2011
vor 13 Jahren

nein, es geht nicht um die Column Header,

das Problem ist folgendermaßen:
das DataGrid zeigt Daten für einen Monat an, je nachdem wieviele Tage der jeweilige Monat hat, so viele Zeilen hat das DataGrid.
Dann gibt es ca. 10 Spalten mit Nummern ( Auftragsnummer und Rechnungsnummer o.ä.) - diese Nummern sind in der Zeile aufsteigend sortiert.
Die Daten werden aus einer Datenbank geladen.
Der User kann die Daten in den Zellen ändern - wenn er eine Zelle nach Ändern verlässt, soll sich die jeweilge Zeile wieder automatisch sortieren.

Mein Problem bei der Sache ist, dass ich nach jedem Ändern die Daten in die DB zurückschreiben muß um die Itemsource das DataGrid zu ändern - dadurch wird das Programm etwas langsam.

Jetzt suche ich eine Lösung mit folgenden Schritten:

  • DataGrid laden
  • User kann mehrere Änderungen vornehmen - Grid sortiert sich nach jedem Verlassen der jeweiligen Zelle
  • User ist fertig und drückt Button um Änderungen in DB zu speichern

ist sowas möglich?

2.223 Beiträge seit 2005
vor 13 Jahren

Hallo Jimmy99 und Herzlich Willkommen hier im Forum,

leider musst Du diese Sortierung manuell vornehmen, dazu könntest Du einerseits deine DatenQuelle direkt sortieren (bei MVVM innerhalb des ViewModels)
oder Du könntest Dir ein Dependency Property erstellen und dieses dem jeweiligen ItemsControl zuweisen, innerhalb des Depency Properties hängst Du dich da die Click Event, für den Spalten Klick oder an irgendwelche andere Events, der jeweiligen Spalten oder einzelnen zellen und Im Handler führst du die Sortierung durch.

Viele Grüße
Lars

J
Jimmy99 Themenstarter:in
10 Beiträge seit 2011
vor 13 Jahren

ok, das Sortieren klappt schonmal soweit,
jetzt hab ich das Problem, dass die geänderten Daten nicht richtig angezeigt werden,
erst nach Doppelklick in das jeweilige Feld erscheint der neue Wert,

ich denke es liegt daran, dass ich die Daten für das Grid über eine Klasse erzeuge,
also je nachdem wieviele Tage der Monat hat läuft eine FOR Schleife und erzeugt eine LIST,
der vom User geänderte Wert der Zelle steht jetzt wohl in der Klasse, aber das Datagrid weiß davon nichts,

gibts da noch eine "sauberere" Lösung?
wie funktioniert das mit den Dependency Properties?

danke vielmals für Eure Hilfe...

1.044 Beiträge seit 2008
vor 13 Jahren

Hallo Jimmy99,

am einfachsten ist es, wenn du es so machst, wie es Th69 vorgeschlagen hat. Wenn du eine "saubere Lösung" suchst, verwende das MVVM-Pattern. Alternativ kannst du auch mit Behaviors nachhelfen/nachbessern.

Zu den Dependency Properties: [Hinweis] Wie poste ich richtig? Punkt 1.2.

zero_x

J
Jimmy99 Themenstarter:in
10 Beiträge seit 2011
vor 13 Jahren

ok danke,
dann les ich mich erstmal ins MVVM ein...