设置初始标题的默认排序顺序单​​击gwt单元格表

时间:2012-02-29 18:30:08

标签: gwt gwt-celltable

我有一个GWT CellTable,其可排序列非常类似于开发人员的指南示例(http://code.google.com/webtoolkit/doc/latest/DevGuideUiCellTable.html#columnSorting)。

但是,我希望某些列按降序排序,而不是默认升序。也就是说,如果列A当前没有排序并且我点击它的标题,我希望列A在第一次单击时降序排序,在第二次单击时升序。但我仍然希望其他列按照目前的方式排序 - 在第一次点击时使用升序。

除了用于设置可排序性的Column.setSortable(boolean)方法和用于手动触发排序的ColumnSortList.push(ColumnSortInfo)方法之外,似乎没有太多控制过程。

有没有办法实现这个目标?

4 个答案:

答案 0 :(得分:7)

Column.setDefaultSortAscending(false)是这样做的简单方法;无需自定义CellTable

答案 1 :(得分:5)

我能够通过覆盖与表关联的CellTable的{​​{1}}方法,扩展onColumnSort(ColumnSortEvent)以完全按照我的意愿行事。这是实施的肉/土豆。我不得不在封面下进行一些维护,以便在您要再次对其进行排序时跟踪列是否已经排序。

让我感到困惑的一件事(在谷歌的例子中并不清楚)是使用ListHandler方法实际上并没有像点击那样触发排序,而只是改变了列认为它已经排序。

当我准备好使用我制作的这张桌子时,我基本上做了以下事情:

ColumnSortList.push()

以下是SortedCellTable<MyRowObject> table = new SortedCellTable<MyRowObject>(); table.addColumn(colOne, "one", true); // sortable column table.addColumn(colTwo, "two", true); //sortable column table.addColumn(colThree, "three", false); // unsortable column table.setDefaultSortOrder(colOne, true); // sorts ascending on first click table.setDefaultSortOrder(colTwo, false); // sorts descending on first click table.setInitialSortColumn(colTwo); // sort this column as soon as data is set table.setComparator(colOne, colOneComp); // use this comparator when sorting colOne table.setComparator(colTwo, colTwoComp); // use this comparator when sorting colTwo panel.add(table); // add the table to our view // ...sometime later, asynchronously... table.setList(myRowObjectList); 实施:

SortedCellTable

答案 2 :(得分:2)

看看GWT CellTable columnsorting。 (有人投了票,因为他/她不同意我的做法?)

这不是你的问题的答案,但它主张你在尝试小册表例子所说明的任何事情之前,先了解Celltable的基础知识。

通过了解Cell / Grid表的基本行为和要求,列的排序将清楚地表现出来。

通过提供比较器的实现来执行排序。就我而言,我尝试了一些实现比较器的方法,以适应我希望列分类的各种方式。

答案 3 :(得分:1)

而不是

someTable.getColumnSortList().push(provider.getDefaultSortColumn());

使用

someTable.getColumnSortList().push(new ColumnSortInfo(provider.getDefaultSortColumn(), false));