Pregunta

Supongamos que recuperas 100 registros y los visualizas en una página. El usuario solo actualiza 2 de los registros en la página. Ahora desea actualizar solo los dos registros, y no los otros 98.

¿Es mejor tener un envío en la página, luego saber de alguna manera cuáles 2 se actualizan, luego enviar solo esos dos a la base de datos para una actualización?

¿Qué significa el " de alguna manera " como?

O, ¿tendría un botón de actualización-envío para cada fila y solo actualizará el registro al que está vinculado?

¿Fue útil?

Solución

Por supuesto, hay diferentes maneras en que puedes hacer esto. En general, puede ahorrarse algunos problemas y el procesamiento del lado del servidor mediante el uso de Javascript para ensamblar sus datos POST solo para los registros que han cambiado. Dos pensamientos sobre cómo podría funcionar esto:

1) Vaya a la ruta ajax y haga live -editing. Por lo tanto, los registros se presentan en una tabla y parecen no ser editables. Cuando un usuario hace clic en una fila en particular, esa fila se puede editar utilizando Javascript para crear el formulario HTML apropiado sobre la marcha. Luego, tenga un botón de envío o algún otro controlador (por ejemplo, mover el foco a otra fila de la tabla) que activará la POST que actualiza la base de datos (de forma asíncrona a través de su método ajax preferido). Afortunadamente, los marcos de Javascript de uso general pueden ayudar mucho en esta área.

2) Casillas de verificación: cada vez que se edita una fila, su casilla de verificación se marca. Cuando se hace clic en el botón de enviar, use javascript para publicar los datos de la POST al agarrar todo en la fila cuya casilla de verificación está marcada. Un usuario puede desmarcar una casilla para cancelar los cambios en esa fila antes de enviarla.

Otros consejos

Ajústelo utilizando jQuery o alguna otra biblioteca de JavaScript y coloque y actualice el botón en cada fila.

Hay muchas respuestas a esta pregunta y, en cierta medida, dependen de sus herramientas de desarrollo y del " sentir " del sitio.

Si estuvieras implementando llamadas Ajax para hacer las actualizaciones línea por línea, lógicamente esto parece correcto tener un botón por línea y luego actualizarlo con una llamada Ajax cuando se cambia una línea.

Este es también el escenario en el que los conjuntos de datos desconectados se diseñaron para resolver y ADO.net los maneja muy bien.

Entonces, como siempre, la respuesta es " ¡Depende! "

Puede usar JavaScript para marcar cada campo como cambiado cuando un usuario cambia un campo de entrada. Cree un campo oculto que tenga el ID de la fila que está actualizando y un indicador sucio. (como is_dirty_ $ id) En JavaScript, cree un controlador onChange que establezca el campo oculto como sucio. cuando se cambia alguna entrada.

Alternativamente, puede crear campos ocultos para cada campo real que muestre. El campo oculto contendría los valores iniciales. compruebe cada campo en el lado del servidor para determinar qué ha cambiado.

Probablemente desee almacenar una fecha modificada por última vez como un campo oculto para cada registro. De esta forma, si otro usuario actualiza el mismo registro, puede mostrar un mensaje de error que dice "otro usuario ha actualizado este registro". o similar.

Un botón de envío. Podría prever el caso de que podría usar más de uno, pero en el caso general solo uno. (Tenga en cuenta que esto me parece una pregunta de una página web, así que estoy respondiendo con esa suposición).

Hay tres formas en las que puedes pensar en las que puedes manejar los cambios de seguimiento:

JavaScript: coloque una función onChange () en los controles que actualizan un campo oculto. Si ese valor oculto tiene un valor, entonces actualice el registro asociado. Requiere JS en el navegador, y no le dice qué campos actualizar, solo qué registros.

Muchos campos de formulario: coloque un campo oculto con cada control y compárelos todos cuando regresen. Esto sería feo, pero le permitiría saber qué campos actualizar (no solo el registro). También le permitiría saber si alguien deshizo un cambio que comenzó.

Sesiones: puede colocar los valores originales en las variables de sesión, luego hacer la comparación cuando los valores regresen. Esto sería un poco más elegante que muchos campos ocultos, y menos abierto para las personas que juegan con los datos publicados atrás (ya que nunca debe confiar en nada que regrese, incluso en campos ocultos). Requiere cookies en el navegador y sesiones en la tecnología del servidor.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top