【问题标题】:Programatic CellTable sort in GWT not workingGWT中的程序化CellTable排序不起作用
【发布时间】:2012-12-06 21:11:18
【问题描述】:

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

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

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

【问题讨论】:

    标签: gwt sorting celltable


    【解决方案1】:

    您可以使用很少的 exta 代码以编程方式对列应用排序。下面的代码 sn-p 做到了 -

    当你将数据设置到 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 时,执行以下代码 sn-p -

    ColumnSortInfo columnSortInfo = new ColumnSortInfo( sortColumn, sortDirection );
    cellTable.getColumnSortList().push( columnSortInfo );
    ColumnSortEvent.fire( cellTable, cellTable.getColumnSortList());
    

    【讨论】:

    • 我缺少的成分是 ColumnSortEvent.fire()。成功了。
    【解决方案2】:

    你必须再次在网格上调用 setData.....

    【讨论】:

    • 这行不通,我也没想到会这样。我从来没有对底层列表进行排序,只是将列推到排序列表中。
    • 排序已隐式设置。更容易调用:ColumnSortEvent.fire(cellTable, cellTable.getColumnSortList());
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多