2011-10-20 11 views
6

Come si ottiene l'oggetto riga sulla riga selezionata in jqGrid? Ho bisogno dell'oggetto reale, non del valore di cella. Ho esaminato la documentazione ma non sono riuscito a trovare un metodo che mi fornisse l'oggetto riga. dal momento che utilizzo i formattatori personalizzati, il valore cellValue non funzionerà.jq Oggetto riga griglia in onSelectRow

risposta

9

Se si implementa custom formatter e vuole ottenere il valore della cella rispetto di getCell o getRowData è necessario implementare la funzione unformat anche.

Non è chiaro cosa intendi in "Ho bisogno dell'oggetto reale, non del valore di cella". Inoltre, non è chiaro quale sia il datatype utilizzato, indipendentemente dal fatto che si usi o meno l'opzione loadonce: true e se si caricano i dati dal server in quale formato i dati verranno inviati al server.

Se si utilizza datatype: 'local' o si utilizza loadonce: true i parametri interni data e _index verranno riempiti. Per ottenere dati grezzi dalla griglia da rowid è possibile utilizzare

var rowData = this.p.data[this.p._index[rowid]] 

o

var grid = $(this), 
    localdata = grid.jqGrid('getGridParam', 'data'), 
    indexes = grid.jqGrid('getGridParam', '_index'), 
    rowData = localdata[indexes[rowid]]; 

Se non si utilizza datatype: 'local' o utilizzare loadonce: true e caricare i dati dal server solo tu puoi salvare l'oggetto rappresentato i dati dalla risposta del server in una variabile (in un oggetto). Il gestore di eventi loadComplete ha un parametro data che rappresenta i dati non elaborati pubblicati dal server. In questo modo è possibile salvare i dati di cui si ha bisogno in un oggetto (in una mappa che otterrà oggetto oggetto da rowid) e utilizzarlo all'interno del gestore di eventi onSelectRow.

+0

Grazie per questo, mi ha indirizzato nella giusta direzione – SystemParadox

+1

@SystemParadox: siete i benvenuti! Vi consiglio di esaminare ulteriormente il metodo 'getLocalRow'. Guarda [la risposta] (http://stackoverflow.com/a/9145342/315935) o [un altro] (http://stackoverflow.com/a/10362294/315935) per alcuni piccoli esempi di codice e ulteriori informazioni. [Il codice sorgente] (https://github.com/tonytomov/jqGrid/blob/v4.3.2/js/grid.base.js#L3494-3505) del metodo è molto piccolo e ti consiglio di leggerlo anch'io . – Oleg

+0

Devo ammettere che l'ho sempre trascurato, ma la memorizzazione dei dati per un utilizzo successivo sul caricoComplete è una funzionalità molto preziosa. Dal momento che non uso mai datatype: 'local' o loadonce: true. Mi chiedo anche perché non è memorizzato di default in una sorta di proprietà 'rawdata'. Comunque grazie per avermelo fatto notare Oleg. +1 – Steven

3

nel mio progetto:

ondblClickRow : function(rowid,iRow,iCol,e) { 
    $($("#completeDetail").getInd(rowid,true)).find(":first").click(); 
} 

Questo risolverebbe il fila aumento non trovare cercando la fila

utilizzare questa funzione ->getInd(rowid,rowcontent).

Questo metodo restituisce l'indice della riga nella tabella della griglia specificata da id=rowid quando rowcontent è impostato su false (impostazione predefinita). Se rowcontent è impostato su true, restituisce l'oggetto della riga di input. Se non è possibile trovare il rowid, la funzione restituisce false.

Problemi correlati