如何确保" cellTable.getColumnSortList()。push"排序列降序?

时间:2014-05-04 22:16:39

标签: gwt

我希望myCellTableqtyColumn降序排序。那就是那些数量最多的人将会排在最前面。

myCellTable.getColumnSortList().push(qtyColumn);
myCellTable.getColumnSortList().push(qtyColumn);
//someone said we have to do the push twice. I did but it still sort Asc. 
So I think the above code doesn't seem elegant

我只需要一个简单的代码,保证表格显示带有qty列的数据排序desc。

那么,如何用qty列排序desc显示表?

注意:我发现此public ColumnSortList.ColumnSortInfo(Column<?,?> column, boolean ascending)但不知道如何使用它?

尝试了很多方法,但没有用。

myCellTable.getColumnSortList().push(new ColumnSortInfo(qtyColumn, false)); // not working

 //this is also not working
 ColumnSortInfo sortInfo = myCellTable.getColumnSortList().push(qtyColumn);
 if (sortInfo.isAscending()) {
        myCellTable.getColumnSortList().push(qtyColumn);

 }

3 个答案:

答案 0 :(得分:0)

解决方法:如果没有任何效果,则只需将已排序的List按照初始排序方式传递到CellTableListDataProvider

使用Collections.sort()

它非常适合我。

示例代码:(按名称降序排序)

    Collections.sort(contactList,new Comparator<Contact>() {

        @Override
        public int compare(Contact o1, Contact o2) {
            return o2.name.compareTo(o1.name);
        }
    });

    // Create a data provider.
    ListDataProvider<Contact> dataProvider = new ListDataProvider<Contact>(contactList);

    // Connect the table to the data provider.
    dataProvider.addDataDisplay(table);

查找下面的示例代码,以便对标题列的点击进行排序。

答案 1 :(得分:0)

这似乎有效,不确定是否有任何问题:

table.getColumnSortList().clear();
table.getColumnSortList().push(column);
table.getColumnSortList().push(column);                 
ColumnSortEvent.fire(table, table.getColumnSortList());

答案 2 :(得分:0)

尝试拨打

setVisibleRangeAndClearData(Range range, boolean forceRangeChangeEvent)

在单元格表上,第二个参数为true,在推送调用后立即强制执行RangeChangeEvent。