jquery - full - jqgrid search example
jqGrid no guarda las ediciones de fila en línea (2)
Estoy trabajando con jqGrid 4.3.2 en un sitio web ASP.NET MVC 4, jQuery 1.7.2. Hay varios lugares en la aplicación donde se usa jqGrid. Mi configuración general en este momento es que toda la edición se hace localmente ( loadonce: true
y clientArray
) con navegación y edición en línea, y todos los datos de la grilla se publican en el servidor en el formulario enviado a través de llamadas AJAX. Me he encontrado con algunas dificultades con las ediciones de fila y en qué eventos están comprometidos. Puede ver el sitio (y la fuente, el trabajo total en progreso, sea bueno) aquí . Si agrega o edita una fila y luego hace clic en algún otro lugar de la página, la edición de la fila no se guarda. El usuario debe presionar la tecla Intro en algún lugar durante la edición de la fila para guardar la fila.
He tocado esto un poco en esta pregunta , que Oleg tuvo la amabilidad de responder. ¿Hay alguna forma de confirmar una edición de fila que no sea cuando se presiona la tecla Intro, como cuando la fila pierde el foco, tal vez?
Para cualquiera que lea esto en 2016, esta funcionalidad ahora se ha incorporado a jqGrid. Ver https://github.com/tonytomov/jqGrid/issues/785 . En el momento de escribir jqGrid 5.1 estaba fuera, por lo que espero que esta funcionalidad esté disponible desde la versión 5.2 en adelante. Como alternativa, solo obtenga el código más reciente de GitHub.
Para usarlo simplemente establece las siguientes propiedades en tu jqGrid:
...
restoreAfterSelect: false,
saveAfterSelect: true,
...
Ya no es necesario implementar su propia solución.
Lo que puedes hacer es lo siguiente:
- En primer lugar, debe establecer la opción
restoreAfterSelect: false
de inlineNav . Veo que la opción no está documentada, pero puede verla en el código fuente . Sin la configuración eninlineNav
usabeforeSelectRow
para llamar arestoreRow
(ver aquí ). - Implemente el guardado de la fila de edición anterior dentro de
onSelectRow
(vea el código de la respuesta ) o dentro debeforeSelectRow
. Probablemente el uso debeforeSelectRow
sea aún más fácil porque la última fila de edición, que debe guardarse, podría ser solo la última fila seleccionada que se puede obtener de la opciónselrow
porque el valor aún no se ha modificado dentro debeforeSelectRow
.