2014-05-20 9 views
6

Voglio solo ordinare la colonna 0 decrescente. Sto usando questo codice:Ordina in Google Table Chart

var table = new google.visualization.ChartWrapper({ 
    chartType: 'Table', 
    containerId: 'chart_table_a', 
    options: { 
    sortColumn: 0, 
    sortAscending: false, 
    sort: 'enable' 
    } 
}); 

Io non voglio fare la tabella ordinabili, ma il codice funziona solo con sort: 'enable'.

C'è un modo per ordinare semplicemente senza rendere la tabella ordinabile?

risposta

9

Trova le DataTable:

// sort by column 0, descending 
data.sort({column: 0, desc: true}); 

o utilizzare un DataView ordinato:

var view = new google.visualization.DataView(data); 
view.setRows(data.getSortedRows({column: 0, desc: true})); 
table.draw(view, options); 

Ordinamento DataTable modifica l'ordine reale dei dati, e interesserà altri grafici/tabelle che utilizzano il DataTable . Questo può essere costoso in termini di utilizzo della CPU se DataTable contiene un numero elevato di righe. L'uso di un DataView conserva i dati nel DataTable originale (a scapito di un piccolo aumento nell'uso della memoria), ed è relativamente economico in termini di tempo della CPU, ma se il tuo DataTable non è enorme o non hai altri grafici che si basano su di esso, probabilmente sei al sicuro semplicemente ordinando il DataTable di base.

+0

Grazie Andrew. Ho appena aggiornato il codice, perché stavo usando la tabella come parte di una dashboard. In questo caso, come posso utilizzare una delle tue soluzioni? – Khrys

+1

È ancora possibile ordinare il DataTable di base (o creare un DataView ordinato per guidare il Dashboard). Se si dispone di altri grafici che dipendono da uno specifico ordine e si desidera modificare l'ordinamento solo per la tabella, questo diventa un po 'più complicato. – asgallant

+0

Grazie Andrew. L'unica ragione per non lasciare che l'ordinamento dell'utente sia: Quando l'utente ordina la tabella perde il css personalizzato applicato (inizierò un'altra domanda con quella situazione). – Khrys