2010-11-15 51 views
6

La selección múltiple en JQGrid solo permite una selección múltiple o selecciones únicas y la funcionalidad de cambio no es lo que esperaría que hiciera la selección de cambio. Tampoco me gusta que necesitemos comboboxes con multiselect.JQGrid - Multiselect

¿Qué otra solución podría usar para multiselect?

+4

Yo creo que no es realmente el lugar para estar exhibir sus mercancías. – wmitchell

+1

SO es un sitio de QA ... usted no hizo una pregunta ... Escribe un blog. Voto para cerrar –

+1

tratando de no ser m8 se ve bien, creo que podría haber mejores lugares para ponerlo. es decir, en el sitio de plugin de Jquery. Si bien es bueno ver el entusiasmo, simplemente no quiero que se convierta en un mercado abierto. – wmitchell

Respuesta

26

[oct 2011] Se actualizó para usar 4.0 API, errores de selección de cambio corregidos, bucle de selección simplificado. Probado en 4.2.0.


Si como yo, se necesitaba una selección múltiple adecuada en el jqGrid - donde ctrl selecciona una sola fila a la vez, seleccione selecciona varias filas y ni desactive la selección y selecciona la fila 1 - Usted lo ha encontrado.

Lo primero es lo primero: Conjunto multiselect: true en la definición de la retícula (que no defina cualquier otra opción de selección múltiple)

siguiente: En gridComplete: function() {} establece grid.jqGrid('hideCol', 'cb'); - esto oculta las casillas de verificación si no desea ellos.

Finalmente: La parte principal

beforeSelectRow: function (rowid, e) { 
    if (!e.ctrlKey && !e.shiftKey) { 
     $("#grid").jqGrid('resetSelection'); 
    } 
    else if (e.shiftKey) { 
     var initialRowSelect = $("#grid").jqGrid('getGridParam', 'selrow'); 
     $("#grid").jqGrid('resetSelection'); 

     var CurrentSelectIndex = $("#grid").jqGrid('getInd', rowid); 
     var InitialSelectIndex = $("#grid").jqGrid('getInd', initialRowSelect); 
     var startID = ""; 
     var endID = ""; 
     if (CurrentSelectIndex > InitialSelectIndex) { 
      startID = initialRowSelect; 
      endID = rowid; 
     } 
     else { 
      startID = rowid; 
      endID = initialRowSelect; 
     } 

     var shouldSelectRow = false; 
     $.each($("#grid").getDataIDs(), function(_, id){ 
      if ((shouldSelectRow = id == startID || shouldSelectRow)){ 
       $("#grid").jqGrid('setSelection', id, false); 
      } 
      return id != endID;       
     }); 
    } 
    return true; 
} 

El fin - Espero que ayude

+0

Gracias por publicar esto, sin embargo, sería un poco más útil si el código se probó correctamente ... –

+1

Gracias, Una nota: debe reemplazar todas las apariciones de $ ('# cuadrícula') con $ (esto). – brianray

+0

@Byron Cobb: Excelente solución, +1 de mí. La selección también resalta el texto en la cuadrícula. ¿Cómo prevenir el resaltado de texto? Cómo se permite agregar/eliminar selecciones de a/de la selección si se presiona la tecla Mayús + flecha arriba/abajo. – Andrus

Cuestiones relacionadas