none
Cambios indeseados al realizar MiTabla.AcceptChanges. RRS feed

  • Pregunta

  • Hola amigos del foro: Tengo un datable que el contenido lo muestro en un datagridview: dgHistorico.Datasource= MiTabla. Después de esto, hago una serie de validaciones y voy coloreando las celdas según corresponda, por último, en el encabezado de cada fila del datagridview voy poniendo el número de fila, de menor a mayor. Una vez que terminé de hacer todo esto ejecuto la instrucción MiTabla.AcceptChanges, pero al hacer esto me borra los colores que edité en las celdas y también me borra los números consecutivos que puse en los encabezados de cada fila. ¿Se puede evitar esto? Necesito que quede con los cambios que he realizado.

    Saludos y gracias a todos.

     
    martes, 3 de julio de 2018 15:17

Respuestas

  • Probablemente  tienes una confusión acerca de lo que hace el método AccpetChanges. Lo que hace es tomar un DataTable y marcar todas las filas como "no modificadas". Esto típicamente se hace después de haberlas salvado en base de datos con el método .Update, con el fin de que la siguiente vez que hagamos otro .Update no se vuelvan a grabar. Desde el punto de vista del DataBindind, esto se considera un cambio de datos, por lo que los datos se re-vinculan a los controles que tengan un DataBinding, en este caso el DataGridView. Al volver a recargar el DataGridView, se pinta todo de nuevo y por lo tanto se pierden los cambios que hayas hecho en las celdas o las filas.

    Probablemente la solución más sencilla sea realizar todos esos cambios de color y de numeración que has mencionado dentro del evento "DataBindingComplete", de forma que se repitan cada vez que los datos cambien (o el sistema crea que han cambiado).

    martes, 3 de julio de 2018 15:38

Todas las respuestas

  • Probablemente  tienes una confusión acerca de lo que hace el método AccpetChanges. Lo que hace es tomar un DataTable y marcar todas las filas como "no modificadas". Esto típicamente se hace después de haberlas salvado en base de datos con el método .Update, con el fin de que la siguiente vez que hagamos otro .Update no se vuelvan a grabar. Desde el punto de vista del DataBindind, esto se considera un cambio de datos, por lo que los datos se re-vinculan a los controles que tengan un DataBinding, en este caso el DataGridView. Al volver a recargar el DataGridView, se pinta todo de nuevo y por lo tanto se pierden los cambios que hayas hecho en las celdas o las filas.

    Probablemente la solución más sencilla sea realizar todos esos cambios de color y de numeración que has mencionado dentro del evento "DataBindingComplete", de forma que se repitan cada vez que los datos cambien (o el sistema crea que han cambiado).

    martes, 3 de julio de 2018 15:38
  • Te agradezco la ayuda Alberto Poblacion<abbr class="affil"></abbr> ,  y sí, lo que quiero después de editar el datagridview es dejar todas las filas cómo "NO Modificadas", pero me parece que al renumerar las filas nuevamente va a marcar las filas cómo modificadas,  voy a hacer unas pruebas el día de hoy y luego te digo los resultados.             

    Muchas gracias.

    martes, 3 de julio de 2018 16:05