full - personalizar el botón de edición jqGrid dentro de la fila para abrir una nueva vista
jqgrid responsive (1)
jqGrid no proporciona actualmente ninguna forma simple de reemplazar la llamada de edición a otro método o incluir un botón personalizado. Lo que puede hacer alternativamente es "subclasificar" la función $.fn.fmatter.rowactions
como la describo en la respuesta . Se $.fn.fmatter.rowactions
función $.fn.fmatter.rowactions
al hacer clic en cualquiera de los botones de acción. Entonces puede probar si el parámetro act
es "edit"
o no. En el caso de un botón que no sea de "edit"
, puede reenviar la llamada a la función original $.fn.fmatter.rowactions
. En el caso del botón "edit"
puede hacer su acción personalizada en su lugar.
ACTUALIZADO : La implementación exacta depende un poco de la versión de jqGrid que utiliza porque los parámetros y el valor de this
de la función $.fn.fmatter.rowactions
son diferentes para las diferentes versiones de jqGrid. Creé para ti la demo que usa jqGrid 4.8 gratis (lee el archivo y wiki ). Usé el siguiente código para subclases
var orgRowActions = $.fn.fmatter.rowactions;
$.fn.fmatter.rowactions = function (e, act) {
var $grid = $(this).closest("table.ui-jqgrid-btable"),
rowid = $(this).closest("tr.jqgrow").attr("id");
if (act === "edit") {
$grid.jqGrid("viewGridRow", rowid);
return false;
}
return orgRowActions.call(this, e, act);
}
Como resultado, el botón "Editar" inicia "Ver" en lugar de editar el formulario.
Planeo incluir más posibilidades de personalización en la próxima versión de jqGrid gratis. Entonces, uno podrá crear un icono en línea personalizado sin los trucos con subclases.
Entonces, el comportamiento predeterminado para el botón editar dentro de cada fila de jqGrid es abrir el formulario en la misma página, ¿verdad?
Necesito que abra otra vista, otra URL.
He logrado hacer esto con el botón de edición que se encuentra en el buscapersonas de cuadrícula, utilizando el método .navButtonAdd. Pero no puedo entender cómo hacer lo mismo con los botones de la fila.
¿Alguien puede ayudarme, por favor?