He estado trabajando con JQGrid mucho, y lo recomiendo a todo el mundo.
La característica que no me gusta es el construido en el multiselect que no use las teclas especiales como shift y ctrl, no dará mucho control y las fuerzas de casillas de verificación que se muestra.

Me gustaría poner en práctica mi propia multiselect de la siguiente manera:
En onSelectRow – comprobar si la tecla mayús o la tecla ctrl se celebra agregar el id de fila a una matriz y seleccione en la red. si ninguno se llevan a cabo, claro la matriz y agregar el nuevo id de fila y seleccione en la red.

Esto es bastante simple de implementar, excepto necesito un evento en el onSelectRow para comprobar si las claves se llevan a cabo. Yo preferiría que no se fije un keydown y keyup evento en el documento principal de la misma.

onSelectRow: function (id) {
            event=???
            if (!event.shiftKey && !event.ctrlKey) {

            }
            else {

            }
}

Saludos,
Byron Cobb.

EDICIÓN: Solución –

Siguientes Olegs entrada, he hecho el siguiente.

  1. Conjunto multiselect: true en la definición de cuadrícula
  2. Oculta la casilla de verificación de la columna en gridComplete mediante el establecimiento de $("#myGrid").jqGrid('hideCol', 'cb');
  3. Activada por la tecla ctrl a mí mismo(no el uso de multikey:»ctrlKey») antes de seleccionar y borrar la selección si no se pulsa la tecla ctrl.
  4. Más adelante mediante la selección de la matriz cuando sea necesario – var SelectedRows = $("#myGrid").jqGrid('getGridParam', 'selarrrow');

beforeSelectRow: function (rowid, e) {
            if (!e.ctrlKey) {
                $("#myGrid").resetSelection();
            }
            return true;
        },
InformationsquelleAutor Bob | 2010-09-07

1 Comentario

  1. 2

    Desde la versión 3.5.3 jqGrid apoyo beforeSelectRow evento que tiene lo que usted necesita y que va a ser llamada antes de onSelectRow.

    Probablemente el uso de multikey opción de jqGrid y la ocultación de la pseudo-columna con el nombre «cb»

    $("#mygrid").jqGrid('hideCol','cb');

    (cb – combo-cajas, ver http://www.trirand.com/blog/?page_id=393/help/multiselect-without-checkboxes-1/) ayudarán a implementar en jqGrid el comportamiento de la selección de la fila que desea.

    ACTUALIZADO: supongo que usted también sabe que $("#mygrid").jqGrid('getGridParam','selarrrow') puede ser utilizado para obtener la matriz de los identificadores de todas las filas seleccionadas, pero asegúrese de insertar la información también.

    • Gracias de nuevo. Yo tengo mi versión de trabajo en el beforeSelectRow. Tratando el valor predeterminado de selección múltiple con multikey:»ctrlKey» sólo llamadas de la onSelectRow si la tecla ctrl presionada – en caso de que no se borre la selección múltiple y empezar una nueva selección?
    • En mi beforeSelectRow me he fijado que siempre devolverá true, pero con selección múltiple y multikeys (ctrl cuando no está pulsado) todavía no llame onSelectRow
    • Cobb: ¡Felicidades! A mí me parece que el comportamiento que se ha implementado podría ser interesante para otros usuarios de jqGrid. Usted puede anexar a su pregunta con el código para compartir la solución con otros. Además se puede publicar también en trirand.com/blog/?page_id=393/feature-request y probablemente será parte de la próxima versión de jqGrid.
    • Después de su entrada, parece bastante simple, pero he añadido la solución a mi pregunta de todos modos. Gracias de nuevo.
    • Cobb: ¡Muy bien! Sin embargo, la mayoría de los problemas aparece ni una sola vez. Si la solución que se describe más detallada o hay una página de demostración que muestran «cómo…» ayuda a otras muchas personas con el mismo problema. Saludos.

Dejar respuesta

Please enter your comment!
Please enter your name here