5

ここでは、ListDataProviderの例をガイドとして使用しています。提供されたコンパレータに基づいて、期待どおりに列が正常にソートされています。例からこの行でほのめかされているように、プログラムでソートを適用しようとしています。

// We know that the data is sorted alphabetically by default.
table.getColumnSortList().push(nameColumn);

これは、セル列がニンジンソートインジケーターでソートされているように見えるようにすることです。ただし、基になるデータは並べ替えられません。テーブルに実際にソートをプログラム的に適用させる方法はありますか?これをCollections.sort()を介して実際にデータを並べ替えることと組み合わせて使用​​できると思いますが、それを避けて1か所で実行したいと思います。

4

2 に答える 2

10

少しのextaコードを使用して、プログラムで列に並べ替えを適用できます。次のコードスニペットはそれを行います-

データをcellTableに設定するときは常に、以下のコードのようにListHandlerを初期化する必要があります-

cellTable.addColumnSortHandler( createColumnSortHandler() );

private ListHandler<T> createColumnSortHandler()
{
     final ListHandler<T> listHandler = new ListHandler<T>(listDataProvider.getList());
     listHandler.setComparator( sortColumn, comparator );
     return listHandler;
}

そして、SortEventを起動したい場合は、次のコードスニペットを実行します-

ColumnSortInfo columnSortInfo = new ColumnSortInfo( sortColumn, sortDirection );
cellTable.getColumnSortList().push( columnSortInfo );
ColumnSortEvent.fire( cellTable, cellTable.getColumnSortList());
于 2012-12-07T16:31:18.110 に答える
0

グリッドでsetDataを再度呼び出す必要があります。

于 2012-12-07T02:24:51.080 に答える