GWT如何使用ListHandler和ListDataProvider对CellTable进行排序

时间:2011-06-22 07:50:13

标签: gwt

我有以下代码


taskDataProvider = new ListDataProvider<TaskHeader>();  
taskDataProvider.addDataDisplay(taskTable);
ListHandler<TaskHeader> columnSortHandler = new ListHandler<TaskHeader>(
            taskDataProvider.getList());
taskTable.addColumnSortHandler(columnSortHandler);

//Some other code that modifies the list in taskDataProvider

当我点击列标题时,会触发ColumnSortEvent,但经过检查,我可以看到columnSortHandler中的列表为空。对taskDataProvider列表所做的任何修改都没有反映在columnSortHandler中。我错过了什么吗?

1 个答案:

答案 0 :(得分:7)

示例here似乎正是您正在寻找的。 根据您展示的代码,我会说您错过了比较器

columnSortHandler.setComparator(yourColumn,
        new Comparator<TaskHeader>() {
          public int compare(TaskHeader t1, TaskHeader t2) {
            return o1.field1.compareTo(o2.field1);
          }
        });

此外,在向dataProvider添加或删除数据时,请确保不设置新列表,而是添加或删除数据。否则你的dataProvider和listHandler将无法使用相同的列表..

不要:

taskDataProvider.setList(newList);

执行:

taskDataProvider.getList().add(newItem);