2011-10-30 4 views
6

Ho un slickgrid in cui alcune righe sono nascoste da un filtro (DataView).ottiene i dati delle righe selezionate in slickgrid

Quando ora chiamo il metodo getSelectedRows della griglia ottengo gli indici delle righe visibilmente selezionate. Ma ho bisogno dei dati effettivi delle righe selezionate.

risposta

19

si deve fare qualcosa di simile:

var selectedData = [], 
    selectedIndexes; 

selectedIndexes = _grid.getSelectedRows(); 
jQuery.each(selectedIndexes, function (index, value) { 
    selectedData.push(_grid.getData()[value]); 
}); 

In questo momento il variabile selectedData contiene i dati per righe selezionate.

+1

Ahhh, grid.getData, che è stato il metodo che cercavo cliccare. MA griglia.getData [valore] non ha funzionato Ho dovuto usare grid.getData(). GetItem (valore). – Preli

+0

Chiedo scusa, utilizzo un fork di Andrew Child (https://github.com/andrewchilds/SlickGrid) e questo codice funziona bene. – matma

+0

Penso che la differenza tra 'grid.getData() [valore]' e 'grid.getData(). GetItem (valore)' si riferisce al tipo utilizzato per la memorizzazione nella griglia: il primo funziona per gli array, il secondo per Slick .DataView. Voglio dire, sto indovinando; Potrei sbagliarmi completamente, ma provalo. –

1

È possibile anche utilizzare questa linea nel ciclo .each per estrarre i dati dal dataview invece di utilizzare getData() dall'oggetto griglia, dal momento che sembra essere incoerente seconda forcella:

var selectedData = [], 
    selectedIndexes; 

selectedIndexes = _grid.getSelectedRows(); 
jQuery.each(selectedIndexes, function (index, value) { 
    selectedData.push(_dataView.getItemById(value)); 
}); 
+2

In realtà, credo che tu voglia usare getItemByIdx, non getItemById. getItemByIdx otterrà i dati per indice, mentre getItemById ottiene i dati dall'ID univoco che hai fornito durante la creazione dei tuoi dati. Farebbero la stessa cosa se l'ID specificato per ciascun elemento è uguale al suo indice nella griglia. Tuttavia, nel mio caso, non corrispondevano. Grazie per il codice però. – dallin

+0

Nessun problema, amico! Spero che funzioni per te. – Axle

3

Hai sbagliato. Deve essere "getDataItem" e non "getData".

var selectedData = [],enter code here`selectedIndexes; 

selectedIndexes = _grid.getSelectedRows(); 
jQuery.each(selectedIndexes, function (index, value) { 
    selectedData.push(_grid.getDataItem(value)); 
}); 
+0

La soluzione fornita da @matma funziona correttamente se non si sta utilizzando un DataView. Non è davvero un errore. La tua soluzione è probabilmente migliore anche se funzionerà sempre. – idbehold

0

Se si accede alla griglia da altri controlli come. Pulsante

var selectRow = gridInstance.getSelectedRows(); 
alert(gridInstance.getDataItem(selectRow).columnName) 
1
hObjMarcado = (grid.getSelectedRows()); 
for(var a_id in hObjMarcado) { 
    vres.push(dataview.getItem(hObjMarcado[a_id])); 
    //la opcion getItem obtiene el elemento especifico, 
    //aun con filtro. 
} 
return vres; 
+2

Si prega di fare un tentativo di scrivere in inglese – Leeor