2010-09-15 13 views
5

Quello che mi aspettavo da un comportamento a selezione multipla è comportarsi normalmente purché non venga premuto alcun tasto speciale. Voglio dire, se hai selezionato una riga e fai clic su un'altra senza che nessun altro tasto sia premuto, allora dovrebbe selezionare quella nuova e deselezionare la vecchia riga. Bene, le opzioni standard di jqGrid ti consentono di scegliere tra un comportamento sempre regolare o sempre un multiselect. Non è possibile avere il multiselect solo quando viene premuto un tasto speciale.jqIl comportamento di multiselect multiplo quando si preme il tasto speciale

C'è un modo per ottenerlo?

risposta

5

jqGrid ha diverse strategie di selezione, tutte con multiselect:true. Per dimostrare lì ho creato tre Esempio:

  1. Se si definisce solo multiselect:true: http://www.ok-soft-gmbh.com/jqGrid/DataToMultiSelect2.htm. Questo è un comportamento standard che non ti piace.
  2. Se si definisce inoltre multiboxonly:true: http://www.ok-soft-gmbh.com/jqGrid/DataToMultiSelect3.htm. Mi sembra che questo comportamento sia ciò di cui hai bisogno.
  3. Se si definisce inoltre multikey:"ctrlKey": http://www.ok-soft-gmbh.com/jqGrid/DataToMultiSelect4.htm. Nel caso in cui la riga verrà selezionata o deselezionata solo se si preme Ctrl.

Se ho compreso correttamente la tua domanda, devi definire sia multiselect:true che multiboxonly:true per ricevere il comportamento che ti piace.

Se ho frainteso la tua domanda e hai inteso qualcos'altro, ti preghiamo di descriverlo in altre parole sulla base degli esempi sopra riportati.

+0

grazie! @Oleg ... multiboxonly: true vuol dire che non posso nascondere la casella di controllo ... visto che sto nascondendo la mia casella di controllo multiselect usando ('hidecol', 'cb') .. può essere possibile nascondendo la casella di controllo? – paul

+0

Sono in grado di ottenere utilizzando beforeSelectRow come beforeSelectRow: function (rowid, e) { if (! E.ctrlKey) { $ ("# list10"). ResetSelection(); } return true; } e settando solo il multiselect: vero ..... fammi sapere se sto facendo qualcosa di sbagliato – paul

0

Ho appena incontrato la stessa domanda che vogliono imitare in qualche modo un comportamento come questo: - Single-selezionare facendo clic su riga di un jqGrid - selezione multipla se key-clic su una riga (come CTRL + clic)

La mia soluzione utilizza l'evento "beforeSelectRow" di jqGrid che passa l'evento click al suo gestore. Il gestore distingue tra clic semplice e "chiave". Un clic con chiave è passato, un clic semplice elimina prima una selezione precedente, che permette all'evento di attraversare.

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 
    } 
} 

Naturalmente si può decidere di ridurre tale è un po ', ma in questo modo sembrava essere più chiaro, penso.

Per questo non è necessaria l'opzione multikeyon multiboxonly. L'opzione Multiselect deve essere impostata su true, ovviamente.

Problemi correlati