2009-12-29 14 views
0

Je ne connais ni Silverlight ni RIA. J'ai un formulaire simple avec un DataGrid lié à un objet DomainDataSource. Les lignes affichées représentent les en-têtes de section à afficher sur une page Web. Une des colonnes s'appelle OrdinalPosition et j'ai spécifié que la grille doit trier par cette colonne. J'ai une colonne personnalisée avec des flèches haut et bas. Le comportement souhaité est que lorsque l'utilisateur clique sur les boutons haut/bas, l'OrdinalPosition est incrémentée/décrémentée afin qu'ils puissent spécifier dans quel ordre les sections apparaissent.La grille de données de Silverlight 4 n'est pas re-triée

Si je modifie manuellement la valeur dans la colonne OrdinalPosition, dès que Je sors de la rangée où la grille se réorganise. Cependant, si j'utilise codebehind pour modifier la valeur de la grille ne se réorganise pas (même si la grille n'affiche la nouvelle valeur.) Voici mon behind pour le bouton clic ...

private void incrementOrdinal(object sender, System.Windows.RoutedEventArgs e) 
    { 
     Button btn = (Button)sender; 
     Section s = (Section)sectionDataGrid.SelectedItem; 
     s.Ordinal++; 
     sectionDataGrid.CommitEdit(); 
    } 

est-il quelque chose que je devrais faire pour repérer la grille pour réorganiser ses enregistrements? DomainDataSource ne re-triera pas les données automatiquement lorsque les enregistrements changent, sauf si l'interface IEditableCollectionView est utilisée pour appliquer les modifications à travers les données que le DomainDataSource expose via ses données ou DataView.

Répondre

0

Essayez quelque chose comme ce qui suit:

IEditableCollectionView view = (IEditableCollectionView)selectionDataGrid.ItemsSource; 
Section s = view.CurrentItem; 
view.EditItem(s); 
s.Ordinal++; 
view.CommitEdit(); 

C'est ce que DataGrid effectue lorsque vous effectuez des modifications dans l'interface utilisateur. Le ItemsSource est lié à la propriété DomainDataSource.Data, qui est une instance de la classe DomainDataSourceView, représentant les données IEnumerable chargées. DomainDataSourceView implémente IEditableCollectionView et lorsque CommitEdit est appelé par rapport à cette vue après avoir utilisé EditItem, il réorganise les données sur la page en cours.

Notez que lorsqu'il y a des modifications, le ré-tri local n'autorisera pas les éléments à se déplacer ou non sur la page en cours.