我有以下代码
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中。我错过了什么吗?
答案 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);