Saber las líneas borradas, añadidas o modificadas por un DataSet

553 vistas

Este código permite detectar los valores de las líneas de un DataGrid que han sido modificadas, borradas o añadidas por el usuario. Se supondrá que  se ha llenado el DataGrid mediante un DataSet y un SqlDataAdatper y que la sentencia sql del DataAdapter contiene dos campos siendo de la forma:



sql
  1. SELECT Campo1, Campo2 FROM Tabla



En el evento click de un botón, podemos poner:



csharp
  1. // representa una línea de datos de un DataTable
  2. DataRow dr;
  3. // variable string para recuperar los resultados
  4. string ligneModif, ligneSupp, ligneAjout;
  5. string result;
  6.  
  7. // recorremos cada línea del DataTable
  8. foreach( dr in DataSet.Tables["DataTable"].Rows)
  9. {
  10.     // según el estado de la línea
  11.     switch(dr.RowState)
  12.     {
  13.         // Lnea modificada
  14.         case DataRowState.Modified :
  15.             // dr[0] recupera el valor de la primera columna
  16.             // DataRowVersion.Original recupera el valor antes de la modificación
  17.             ligneModif += dr[0, DataRowVersion.Original] + "-" + dr[1, DataRowVersion.Original];
  18.             break;
  19.         // Lnea borrada
  20.         case DataRowState.Deleted :
  21.             ligneSupp += dr[0, DataRowVersion.Original] + "-" + dr[1, DataRowVersion.Original];
  22.             break;
  23.         // Lnea añadida
  24.         case DataRowState.Added:
  25.             ligneAjout += dr[0] + "-" + dr[1];
  26.     }
  27. }
  28.  
  29. result = "línea(s) modificada(s) : \n" + ligneModif + "\nlínea(s) borrada(s) : \n" + ligneSupp "\nLnea(s) añadida(s) :\n" ligneAjout;
  30.  
  31. MessageBox.Show(result);