2012-07-19 11 views
7

Domanda semplice, è difficile trovare una risposta:jqGrid: Come usare selezione multipla su pagine diverse

Se cerco di selezionare una riga di codice, io uso questo:

$('#grid').jqGrid('setSelection', rowId); 

Il problema è che seleziona solo le righe sulla pagina visibile corrente. Se rowId si trova su un'altra pagina, non sarà selezionato.

Ulteriori informazioni: il mio obiettivo è selezionare più righe (distribuite su più pagine) quando la pagina viene caricata per la prima volta.

Grazie, Rafael

PS: Questo ragazzo ha lo stesso problema. Nessuna risposta: jqgrid multiselect only selects rows on the current page, if paging is enabled. How to make it select rows across pages?

risposta

8

Giusto, jqGrid seleziona solo le righe nella pagina corrente. Per selezionare altre righe è necessario mantenere un elenco degli ID selezionati e selezionarli manualmente.

Per fare questo è necessario aggiungere il codice per il vostro evento loadComplete per cercare la pagina corrente e selezionare una delle seguenti righe:

var ids = grid.jqGrid('getDataIDs'); 
for (var i = 0; i < ids.length; i++){ 
    if (selected[ids[i]] === true){ 
     grid.setSelection(ids[i], false); 
    } 
} 

È inoltre necessario aggiungere il codice per i tuoi onSelectRow e onSelectAll eventi per regolare la contenuto del selected quando l'utente seleziona/deseleziona le righe:

onSelectRow: function(rowid, status){ 
    selected[rowid] = status; 
    setSelectedDeviceCount(); 
}, 

onSelectAll: function(rowids, status){ 
    for (var i = 0; i < rowids.length; i++){ 
     selected[rowids[i]] = status; 
    } 
} 

fa questo aiuto?

+0

Grazie mille! Sfortunatamente il codice non può essere usato in questo modo (colpa mia, non tuo!), Ma l'idea generale mi ha fatto sistemare questo! Grazie! –