2010-11-02 9 views
2

nous avions l'habitude d'utiliser une grille de point de repère qui rendait cela assez facile mais maintenant nous utilisons datagridview pour nos formulaires. Mon problème est que j'ai besoin de mettre à jour un enregistrement car il est changé dans le datagridview, j'ai utilisé l'événement Cell Leave.Mise à jour d'un enregistrement de base de données après que la valeur de la cellule datagridview a été modifiée?

private void dataGridView1_CellLeave(object sender, DataGridViewCellEventArgs e) 
    { 
     if (dataGridView1[e.ColumnIndex, e.RowIndex].Value == null)//incase it is a blanked cell 
     { 
      MessageBox.Show("Cell changed:" + e.ColumnIndex.ToString() + ":" + e.RowIndex.ToString() + " New Value:" + " null"); 

     } 
     else 
     { 
      MessageBox.Show("Cell changed:" + e.ColumnIndex.ToString() + ":" + e.RowIndex.ToString() + " New Value:" + dataGridView1[e.ColumnIndex, e.RowIndex].Value.ToString()); 

     } 
    } 

je teste le code ci-dessus en changeant une valeur, puis en appuyant sur la touche entrée (comme les utilisateurs font actuellement), mais il ne montre pas la valeur modifiée, mais le précédent. Une solution de contournement que j'ai déjà faite est de mettre à jour tous les enregistrements dans le datagridview, le problème est que cela prend environ 15 secondes de plus que je ne veux pas - plus inutile si un seul enregistrement est modifié.

Répondre

1

D'accord, je pense que j'ai trouvé ma réponse: Si je mets le code suivant avant l'if-else THEN les changements cellulaires ont été reconnus

dataGridView1.EndEdit(); 

Après cela, les valeurs des cellules modifiées sont Vu..a l'air bien!

+0

merci l'homme sur cette réponse à vous !!! :-) – Sylca

Questions connexes