2010-10-05 7 views
0

J'ai un Silverlight DataGrid, pour lequel l'utilisateur peut changer les valeurs. J'ai aussi un bouton "Enregistrer". Lorsque l'utilisateur clique sur le bouton "Enregistrer", je souhaite que seules les lignes (éléments) de la grille de données que l'utilisateur a modifié soient enregistrées. Comment puis-je accomplir cela?Silverlight DataGrid - Dirty Rows

Répondre

0

Eh bien, si votre propriété de ItemsSource DataGrid est lié à une collection d'une classe appelée MyClass, vous pouvez ajouter une propriété bool-MyClass appelé IsModified. Ensuite, dans les autres setters de cette classe, vous pouvez définir IsModified à true. Par exemple:

public class MyClass 
{ 
    public bool IsModified { get; set; } 

    private string _foo; 

    public string Foo 
    { 
     get { return _foo; } 
     set 
     { 
      _foo = value; 
      IsModified = true; 
     } 
    } 
} 

Ensuite, vous pouvez utiliser LINQ pour interroger la collection d'objets où IsModified est true (ce code suppose items est la collection qui est lié à votre DataGrid):

List<MyClass> toSave = items.Where(x => x.IsModified).ToList(); 

Enfin , utilisez la méthode que vous devez enregistrer gérer chaque élément toSave:

foreach (MyClass curr in toSave) 
{ 
    // Save "curr" here... 

    // Don't forget to reset IsModified 
    curr.IsModified = false; 
} 

J'espère que cela aide.