jqgrid multi-select

jqGrid multiselect: limite la selección de la fila solo con la casilla de verificación



multi-select (3)

Buenos días, estoy trabajando en un jqGrid que tiene activada la multiselección.

Necesito limitar la selección de la fila solo con el cuadro multisel, no haciendo clic en todos los lugares de la fila. Eso es porque necesito hacer algo haciendo clic en los enlaces de algunas celdas y no modificaré la multiselección activa. Traté de establecer la propiedad multiboxonly, pero no es lo que necesito. No encontré nada más para personalizar esta función de la grilla.


Puede controlar en qué clic se seleccionará la fila con respecto a su controlador de eventos beforeSelectRow personalizado. Si el controlador devuelve verdadero, se seleccionará la fila. Si devuelve falso, la fila no será seleccionada.

El segundo parámetro de beforeSelectRow es el objeto de evento , e.target es el elemento DOM al que se hizo clic. Puede obtener la celda ( <td> ) en la que se hizo clic con $(e.target).closest(''td'') . Luego puede usar $ .jgrid.getCellIndex para obtener el índice de la celda insido de la fila. El índice en colModel debe apuntar a la columna ''cb'' que contiene las casillas de verificación. Entonces el código podría ser el siguiente:

beforeSelectRow: function (rowid, e) { var $myGrid = $(this), i = $.jgrid.getCellIndex($(e.target).closest(''td'')[0]), cm = $myGrid.jqGrid(''getGridParam'', ''colModel''); return (cm[i].name === ''cb''); }

La demostración correspondiente que puedes ver aquí .


Me gustaría sugerir una solución más fácil:

beforeSelectRow: function(rowid, e) { return $(e.target).is(''input[type=checkbox]''); },


Cuando multiselect se establece en true, al hacer clic en cualquier lugar de una fila, se selecciona esa fila; cuando multiboxonly también se establece en verdadero, la multiselección se realiza solo cuando se hace clic en la casilla de verificación. Entonces la respuesta sería:

multiboxonly: true