2010-01-27 5 views
20

Ho visto lo documentation ma non sono riuscito a trovare una risposta. C'è un modo per impedire che una riga venga evidenziata quando selezionata? Questo o anche un modo per fermare la selezione della riga. Mi piace l'opzione "hoverrows: true", ma idealmente vorrei interrompere la selezione di una riga con un clic.È possibile interrompere le righe jqGrid dalla selezione e/o evidenziate?

Grazie,

Aggiornamento: Sono stato in grado di "hackily" implementare qualcosa che sembra essere una correzione temporanea. Non mi piace davvero a tutti e vorrei idealmente come una soluzione migliore, se ce n'è uno ...

Ho scoperto che se mi passa l'opzione

onSelectRow: function(rowid, status) { 
    $('#'+rowid).removeClass('ui-state-highlight'); 
} 

quando un'istanza jqGrid, Posso eliminare il momento saliente quando viene aggiunto.

C'è un altro, più ideale, modo di fare questo?

+0

Solo curioso: tutte le righe, righe che soddisfano un criterio specifico (ad esempio, righe "dispari") o una singola riga specifica? –

+0

qualsiasi riga su cui si fa clic. il comportamento naturale di jqGrid è di applicare la classe css 'ui-state-highlight' a una riga, quando viene cliccato. Vorrei smetterla. – Mike

risposta

50

utilizzare il seguente codice:

beforeSelectRow: function(rowid, e) { 
    return false; 
} 
+0

Perfetto! Questo è esattamente il modo in cui stavo cercando di farlo, non riuscivo a trovare l'evento giusto da collegare. Grazie. – Mike

+0

Assicurati anche di abbinare il rivestimento. 'beforeselectrow' non funziona. –

+1

Si noti che ciò disabiliterà qualsiasi modifica su quella riga. – FixMaker

2

Suppongo che potresti indirizzare direttamente questo nel CSS. Basta sostituire i valori per ui-stato-clou per la vostra tabella specifica

#table_id tr.ui-state-highlight { 
    border: inherit !important; 
    background: inherit !important; 
    color: inherit !important; 
} 

#table_id tr.ui-state-highlight a { 
    color: inherit !important; 
} 

#table_id tr.ui-state-highlight .ui-icon { 
    background-image: inherit !important; 
} 

ho usato il valore inherit tanto per fare un esempio - sarà probabilmente necessario copiare alcuni valori dal theme.css per fare questo lavoro.

+0

Grazie, darò uno scatto la mattina e torno da te. – Mike

+0

Per motivi di compatibilità del browser, ho intenzione di evitare questa implementazione. Comunque sembra piuttosto carino nascondere questo problema nel css. Grazie comunque +1. – Mike

2

prova:

onSelectRow: function(rowid, status) { 
    $("#grid_id").resetSelection(); //Resets (unselects) the selected row(s). Also works in multiselect mode. 
} 

si può leggere documentazioni here. Spero che ti aiuta ...

+0

Leggermente più accurato della mia soluzione. Grazie. – Mike

6

Se, come me, hanno un gazillion jqGrids e non si desidera sovrascrivere onSelectRow per ognuno, ecco una versione globale della soluzione di Reigel che ha funzionato bene per me:

jQuery.extend(jQuery.jgrid.defaults, { 
    onSelectRow: function(rowid, e) { 
     $('#'+rowid).parents('table').resetSelection(); 
    } 
}); 
+0

Molto bello. Penso che solo le persone che hanno un sacco di queste cose in giro apprezzeranno la tua risposta +1 –

+0

Questa è un'ottima risposta, utilizzando resetSelection ti consente di preservare la funzionalità onSelectRow e cancella ancora la selezione (ho un'implementazione personalizzata per la casella di controllo che commuta anche la casella di controllo sul clic di riga, questo consente al mio codice di continuare a funzionare senza il brutto colore di selezione :)) – NKCSS

Problemi correlati