2009-07-22 14 views
3

Est-ce que quelqu'un a rencontré ds.hasChanges() étant faux malgré que le ds a clairement les changements pendant que vous le vérifiez à un point d'arrêt? J'ai regardé pendant un certain temps et je ne vois pas ce qui est faux ....NET DataSet.HasChanges est incorrectement faux

// connectionstring and command has been set 
DataSet ds = new DataSet(); 
BindingSource myBindingSource = new BindingSource(); 
SqlDataAdapter dataAdapter1 = new SqlDataAdapter(); 
dataAdapter1.Fill(ds, "Data"); 
myBindingSource.DataSource = ds.Tables["Data"]; 

// then changes made to the datatable on a windows form using bindingnavigator 
ds.HasChanges(DataRowState.Modified); // is false 

Maintenant, quand je mets un point d'arrêt après la ligne avec HasChanges et DataSet Visualiseur Je peux voir que le DataSet a en fait changé, mais HasChanges retourne toujours false. Je suis sûr que je manque l'évidence ... quelqu'un peut-il voir ce que je fais mal?

Vive

+0

Quels changements sont apportés au datatable - c'est-à-dire que les lignes sont définitivement mises à jour, pas ajoutées? De plus, dt.Tables ["Données"]. HasChanges retourne-t-il vrai? – AdaTheDev

Répondre

8

Essayez d'appeler la EndCurrentEdit() sur BindingContext premier:

DataTable dt = ds.Tables["Data"]; 
this.BindingContext[dt].EndCurrentEdit(); 

if(ds.HasChanges(DataRowState.Modified)) 
{ 
    // do your stuff here 
} 

Essayez aussi d'appeler le myBindingSource.EndEdit() qui poussera les données non-commited au DataTable.

+1

Brillant! Merci beaucoup. +1 –

0

Le Windows Form ne fait pas un appel .AcceptChanges() sur le DataSet est-il?

Editer: Ok, donc pas ça. Suivant les choses, par mon commentaire:
1) Les enregistrements ont-ils été modifiés et non simplement ajoutés/supprimés? Que retourne DataSet.HasChanges()?
2) que retourne GetChanges() pour la donnée spécifique dans le jeu de données?

+0

Non. Cela a été ma première pensée aussi ... –

+0

1. Les enregistrements ont été mis à jour non supprimés ou ajoutés 2. renvoie faux 3. il n'y a pas de hasChanges pour les datatables, mais si vous voulez dire getchanges qui renvoie null aussi bien –

+0

Désolé, oui je voulais dire GetChanges. Corrigé ma modification. – AdaTheDev

Questions connexes