Ho una cella Gwt. Facendo clic sulle intestazioni si ordinano correttamente le colonne. Ma a pagina caricare le colonne non sono ordinate per impostazione predefinita. Voglio rendere la colonna più a destra da ordinare quando la pagina viene caricata.Gwt celltable invoca l'ordinamento su una colonna
risposta
È possibile utilizzare il getColumnSortList() e spingere la colonna che si desidera ordinare, come ad esempio:
dataGrid.getColumnSortList().push(columnToSortBy);
La tabella verranno ordinati in base alla colonna data in ordine crescente.
Chiamando questo metodo due volte, si attiva un controllo per verificare se la colonna specificata è già stata inserita nell'elenco e in tal caso verrà ordinata in ordine decrescente, in modo da ottenere la tabella ordinata in base alla colonna in ordine decrescente.
dataGrid.getColumnSortList().push(columnToSortBy);
dataGrid.getColumnSortList().push(columnToSortBy);
Dietro la scena, la colonna viene spinto a un elenco interno nella tabella chiamata ColumnSortList posizione 0. lo stesso elenco viene aggiornato ogni colonna click.
Assicurarsi di chiamare questo metodo dopo aver inizializzato la colonna.
Suggerirei di recuperare i dati che verranno visualizzati già ordinati. Se questo è il caso allora sufficiente impostare l'icona di tipo corretto (crescente o decrescente):
/**
* Displays the appropriate sorted icon in the header of the column for the given index.
*
* @param columnIndex
* of the column to mark as sorted
* @param ascending
* <code>true</code> for ascending icon, <code>false</code> for descending icon
*/
public void setSortedColumn(int columnIndex, boolean ascending) {
Column<T, ?> column = table.getColumn(columnIndex);
if (column != null && column.isSortable()) {
ColumnSortInfo info = table.getColumnSortList().push(column);
if (info.isAscending() != ascending) {
table.getColumnSortList().push(column);
}
}
}
Se i dati non possono essere ordinati prima di recuperare è possibile ordinare la lista allo stesso modo lo si fa quando un l'utente fa clic sull'intestazione (onColumnSort(ColumnSortEvent event)
con un Comparator
) prima di visualizzarlo.
Il tuo codice è stato di grande aiuto. Grazie. – slugmandrew
Ciò è stato utile per garantire che l'ordinamento predefinito non si spostasse tra l'ascendente e la discesa quando si utilizza la soluzione di Jeff Allen. –
Per chiarire un paio di risposte esistenti ... Un elenco cellTable
s' ordinamento (come accedere alla funzione getColumnSortList()
) determina solo come lo stato di intestazione della tabella, ma realtà non ordinare i dati.
Come suggerito da @ z00bs, potrebbe essere opportuno ordinare i dati esternamente, se possibile. Se sai che i dati saranno preordinati, dovresti utilizzare le funzioni getColumnSortList().clear()
e getColumnSortList().push()
per comunicare agli utenti come vengono ordinati i dati.
Se, tuttavia, si desidera che CellTable ordini effettivamente i dati, è necessario attivare un evento per forzare il CellTable a ordinare effettivamente i dati del componente sul lato client. Per fare questo, è possibile utilizzare il metodo dello stato ColumnSortEvent.fire()
, come ad esempio:
ColumnSortEvent.fire(myTable, myTable.getColumnSortList());
Ciò attiverà un evento che gestisce l'ordinamento dei dati in base allo stato corrente della testata. Quindi è possibile impostare innanzitutto lo stato di ordinamento iniziale desiderato dell'intestazione, quindi eseguire questa riga per rendere effettivamente l'ordine dei dati riflettere lo stato di ordinamento attuale rappresentato nell'intestazione.
- 1. A CellTable GWT con intestazione bloccata e colonna iniziale
- 2. GWT: come cambiare colore di riga in GWT Celltable
- 3. GWT Celltable che visualizza solo 15 righe
- 4. GWT 2.1 Intestazione colonna Intestazione eventi click
- 5. Evento del mouse su una colonna di una cella GWT
- 6. Cellule trascinabili CellWable GWT
- 7. Come nascondere la colonna nella tabella delle celle GWT?
- 8. GWT Simple Pager Help
- 9. CellTables e css (GWT)
- 10. CellTables Definizione GWT con UiBinder
- 11. Come posso inserire un widget in una cella CellTable?
- 12. rowSums su una colonna
- 13. invoca IntentService da onDestroy
- 14. GWT UiHandler su HTMLPanel
- 15. Frustrazione di stile DataGrid/CellTable - stili di riga prioritari
- 16. SELECT DISTINCT su una colonna
- 17. Android smoothScrollTo non invoca onScrollStateChanged
- 18. Cellula composita in un'applicazione gwt
- 19. Differenza tra gwt, gwt-rpc, ext-gwt, smart gwt
- 20. annotazione, che invoca un metodo
- 21. GWT 2.1 in UiBinder inserisce Cell Widgets
- 22. GWT su Python App Engine
- 23. Unit Testing una funzione Python che invoca un sottoprocesso vim
- 24. SQL Entra su una colonna come un altro colonna
- 25. Ext GWT vs GWT-EXT
- 26. Tracciamento dei movimenti del mouse su una pagina con GWT
- 27. Serializzazione GWT di una sottoclasse
- 28. GWT FlexTable prestazioni e ottimizzazione
- 29. Invoca gli script Powershell da Java
- 30. Solr sorta su una colonna dinamica
Sto chiamando push() due volte di seguito come mostrato ma, sebbene la freccia lo mostri come ordinato due volte, i dati reali non lo sono. Non riesco a pensare perché questo sta accadendo. – slugmandrew
stesso qui, non so perché –
ho avuto questo problema e ho appena postato la soluzione come risposta alternativa. –