none
Opción deshacer en dataGridView RRS feed

  • Pregunta

  • Hola, 

    tengo un formulario en VS2010 y C# donde hay un DataGridView desde donde se hará el mantenimiento de una tabla (modificación y baja).

    No se si puede hacer en un datagridview pero me gustaría poner un botón para deshaer los cambios por si el usuario se ha equivocado y no quiere hacer el update y simplemente quiere dejar los valores que había en un primer momento.

    He visto que si hago ctrol + Z deshace la modificación en el datagridview pero no se si se puede hacer a nivel de programación.

    Gracias.

    Saludos,

    miércoles, 3 de abril de 2013 11:55

Respuestas

  • Un poco de análisis para ver si te puedo ayudar.

    A nivel formulario, mientras no le de al botón que actualice en la base de datos, tiene la funcionalidad de la DataGridView, no?

    Ahora, si el problema es si el usuario le da al botón Actualizar y luego se da cuenta de que cometió un error, no es que ya actualizó? A lo sumo podrías poner un botón de "Está Ud. Seguro de realizar los cambios?"

    Ahora, que pasa si cambia varios registros y se da cuenta de que uno de ellos se equivocó?

    O sea, modifica un registro y graba, o graba un conjunto de registros?

    Al borrar un registro lo borra directo de la base de datos?

    Falta análisis funcional para poder establecer el correcto funcionamiento que se quiere del sistema.

    Por un lado pensé en Transacciones desde código C# pero el tema es que estas tienen un límite de tiempo de vida.

    Con lo cual creo que la solución, como te dijo Leonardo, es mantener un log de acciones.

    Y le agregaría que para los registros que se borran, lo mejor es manejar una baja lógica.


    Robbie Bozzacchi ----------------

    • Marcado como respuesta Gahad miércoles, 3 de abril de 2013 15:04
    miércoles, 3 de abril de 2013 14:37
  • es que no se que se suele hacer en estos casos

    por lo general evito que una persona edite directo en el grid, trato de que esta entienda todos los campos de la entidad y cuando graba se pone en firme lo que acepto

    [WinForms] Edición Empleados

    o sea edita por fuera del grid y lo que acepta se hace responsable porque impacta directo en la tabla

    sino como comente deberias ver de aplicar el patron command para ir llevando la lista de acciones y sus reversas

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Marcado como respuesta Gahad miércoles, 3 de abril de 2013 15:04
    miércoles, 3 de abril de 2013 14:48

Todas las respuestas

  • hola

    el tema es que deberias mantener un historico de acciones para poder recuperar un registro que has eliminado

    quizas volcar el registro en una tabla auxilia, asi cuando eliminas puede recuperar el registro desde alli y volverlo a crear 

    lo que veo dificil es si usas un id autonumerico ya que al volver a crearlo el id cambiara

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    miércoles, 3 de abril de 2013 12:32
  • Hola Leandro,

    pero no quiero borrar un dato de base de datos y luego recuperarlo. Me refiero a recuperar el valor sin llegar a introducirlo en base de datos.

    Es decir, imagínate que en una celda pone 'Marta' y el usuario lo quiere modificar y pone 'María', pero luego se da cuenta (antes de hacer el update)que no, que era 'Marta' y por tanto ya estaba bien como estaba. Igual que haciendo un ctrol + Z te restablece el valor anterior, no hay nada a nivel de programación que haga esta misma función?

    No se, igual no existe y me estoy aquí liando...

    Saludos,

    miércoles, 3 de abril de 2013 13:41
  • mm funcionalidad como la que describes no existe, salvo que la programes

    existe un patron llamado Command que permite ir generando las acciones que despues puede ir deshaciando

    no digo que sea simple implementarlo pero la funcionalidad que buscas tampoco es simple

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    miércoles, 3 de abril de 2013 14:10
  • Vaya, entonces ante estos casos, el usuario ha de estar seguro al 100% de lo que va a modificar porque sino...qué hace? es que no se que se suele hacer en estos casos. Igual hay alguna alternativa que yo desconozco. Yo he pensado en esta porque es lo que veo más lógico...

    Está claro que mientras no le de al botón que realiza el update no va a pasar nada pero no se, lo veo feo. Tu no?

    miércoles, 3 de abril de 2013 14:13
  • Un poco de análisis para ver si te puedo ayudar.

    A nivel formulario, mientras no le de al botón que actualice en la base de datos, tiene la funcionalidad de la DataGridView, no?

    Ahora, si el problema es si el usuario le da al botón Actualizar y luego se da cuenta de que cometió un error, no es que ya actualizó? A lo sumo podrías poner un botón de "Está Ud. Seguro de realizar los cambios?"

    Ahora, que pasa si cambia varios registros y se da cuenta de que uno de ellos se equivocó?

    O sea, modifica un registro y graba, o graba un conjunto de registros?

    Al borrar un registro lo borra directo de la base de datos?

    Falta análisis funcional para poder establecer el correcto funcionamiento que se quiere del sistema.

    Por un lado pensé en Transacciones desde código C# pero el tema es que estas tienen un límite de tiempo de vida.

    Con lo cual creo que la solución, como te dijo Leonardo, es mantener un log de acciones.

    Y le agregaría que para los registros que se borran, lo mejor es manejar una baja lógica.


    Robbie Bozzacchi ----------------

    • Marcado como respuesta Gahad miércoles, 3 de abril de 2013 15:04
    miércoles, 3 de abril de 2013 14:37
  • es que no se que se suele hacer en estos casos

    por lo general evito que una persona edite directo en el grid, trato de que esta entienda todos los campos de la entidad y cuando graba se pone en firme lo que acepto

    [WinForms] Edición Empleados

    o sea edita por fuera del grid y lo que acepta se hace responsable porque impacta directo en la tabla

    sino como comente deberias ver de aplicar el patron command para ir llevando la lista de acciones y sus reversas

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Marcado como respuesta Gahad miércoles, 3 de abril de 2013 15:04
    miércoles, 3 de abril de 2013 14:48
  • En otro formulario de mantenimiento si que lo hice como comentas, pasando los datos fuera del grid y una vez los ha modificado entonces grabar en BD. Había pensado en hacerlo directamente en el grid por rapidez pero ya veo que puede traer mas problemas que otra cosa.

    Gracias a los dos por vuestra ayuda.

    Saludos,

    miércoles, 3 de abril de 2013 15:04