2009-11-10 7 views
2

J'ai plusieurs DataGrid où j'ai besoin de mettre à jour les informations. Les choses sont, puisque plus d'une personne travaille sur le système en même temps, la grille de données doit être rafraîchie sur une base régulière. Lorsque je me rafraîchis, je perds le tri que l'utilisateur avait.WPF Garder le tri des colonnes avec Datagrid

Y at-il un moyen de le conserver?

grâce

Répondre

2

Notez que ce n'est pas testé, mais pourriez-vous faire quelque chose comme ça?

ListCollectionView lcv = (ListCollectionView)CollectionViewSource.GetDefaultView(myDataGrid.ItemsSource); 
IComparer mySort = lcv.CustomSort; // assumes you've already set it beforehand 
... // stuff happens 
lcv.CustomSort = mySort; 

J'apprends toujours WPF moi-même, mais espérons que cela aide ... -Matt.

+1

Pour couvrir toutes vos bases, vous pouvez également vouloir copier à travers les descriptions de Sort. De cette façon, vous conserverez l'ordre de tri, quel que soit le tri sélectionné. Le code pertinent serait quelque chose comme ceci: var sd = lcv.SortDescriptions.ToList(); [...] if (! lcv.SortDescriptions.SequenceEqual (sd) {lcv.SortDescriptions.ClearItems(); foreach (d dans sd) lcv.SortDescriptions.Add (d);} –

5

Il suffit de mettre à jour le contenu de la collection liée - ne remplacez pas la collection elle-même. Ensuite, vous n'obtiendrez pas un nouveau CollectionView pour que votre tri ne soit pas affecté.

+0

Je l'ai essayé mais ne semble pas pour le faire fonctionner. Je vais devoir vérifier cela d'autres fois –

Questions connexes