5

我在这里使用 ListDataProvider 示例作为指南。根据提供的比较器,这些列按预期排序。我正在尝试以编程方式应用示例中在这一行中提到的排序:

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

这是做什么的,它使单元格列看起来是用胡萝卜排序指示器排序的。但是,基础数据未排序。有没有办法让表格以编程方式实际应用排序。我想我可以将它与通过 Collections.sort() 实际对数据进行排序结合使用,但我想避免这种情况并在一个地方进行。

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 回答