2010-09-15 21 views
5

Lo que esperaba de un comportamiento de multiselección es comportarse de forma normal siempre que no se presione ninguna tecla especial. Quiero decir, si tiene una fila seleccionada y hace clic en otra sin presionar ninguna otra tecla, entonces debe seleccionar la nueva y deseleccionar la fila anterior. Bueno, las opciones estándar de jqGrid le permiten elegir entre el comportamiento siempre regular, o siempre multiselect. No puede tener multiselect solo cuando se presiona una tecla especial.Comportamiento de selección múltiple jqGrid al presionar la tecla especial

¿Hay alguna manera de lograrlo?

Respuesta

5

jqGrid tiene varias estrategias de selección, todas usan multiselect:true. Para demostrar que no crean tres ejemplo:

  1. Si se define únicamente multiselect:true: http://www.ok-soft-gmbh.com/jqGrid/DataToMultiSelect2.htm. Este es el comportamiento estándar que no te gusta.
  2. Si define adicionalmente multiboxonly:true: http://www.ok-soft-gmbh.com/jqGrid/DataToMultiSelect3.htm. Me parece que este comportamiento es lo que necesitas.
  3. Si define además multikey:"ctrlKey": http://www.ok-soft-gmbh.com/jqGrid/DataToMultiSelect4.htm. En el caso de que la fila se seleccionará o deseleccionará solo si se presiona Ctrl.

Si entiendo bien su pregunta que debe definir tanto multiselect:true y multiboxonly:true para recibir la conducta que te gusta.

Si malinterpreté su pregunta y usted ha dicho algo diferente, descríbalo en otras palabras en función de uno de los ejemplos anteriores.

+0

gracias! @Oleg ... multiboxonly: verdadero significa que no puedo ocultar la casilla de verificación ... ya que estoy ocultando mi casilla de selección múltiple usando ('hidecol', 'cb') ... ¿puede ser posible cuando oculto la casilla de verificación? – paul

+0

Puedo lograr usar beforeSelectRow como beforeSelectRow: function (rowid, e) { if (! E.ctrlKey) { $ ("# list10"). ResetSelection(); } return true; } y solo configurando multiselect: verdadero ..... avíseme si estoy haciendo algo mal – paul

0

me encontré con la misma pregunta, queriendo imitar de alguna manera un comportamiento así: - Selección única al hacer clic en la fila de un jqGrid - de selección múltiple cuando llave-clic en una fila (como CTRL + clic)

Mi solución usa el evento "beforeSelectRow" de jqGrid whoch pasa el evento click a su manejador. El manejador diferencia entre el clic simple y el "clave". Se hace clic en un clic con la tecla, un clic simple en primer lugar elimina una selección previa, que permite que el evento se filtre.

function(rowid,e) { 

    if (e.ctrlKey==true) { 
     return true;//CTRL clicked-->multi select 
    } else { 
     $('#CoolGrid').jqGrid('resetSelection');//Reset existing select 
     return true;//Pass through new item selection 
    } 
} 

Por supuesto, es posible que desee acortar esto es un poco, pero de esa manera parece ser más claro, creo.

No necesita la opción multikey ni multiboxonly para esto. La opción de selección múltiple tiene que establecerse en verdadero, por supuesto.

Cuestiones relacionadas