我有以下代码
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
Run Code Online (Sandbox Code Playgroud)
当我单击列标题时,会触发ColumnSortEvent,但经过检查,我可以看到columnSortHandler中的列表为空.对taskDataProvider列表所做的任何修改都没有反映在columnSortHandler中.我错过了什么吗?
这里的例子似乎正是你要找的.根据您展示的代码,我会说您错过了比较器
columnSortHandler.setComparator(yourColumn,
new Comparator<TaskHeader>() {
public int compare(TaskHeader t1, TaskHeader t2) {
return o1.field1.compareTo(o2.field1);
}
});
Run Code Online (Sandbox Code Playgroud)
此外,在向dataProvider添加或删除数据时,请确保不设置新列表,而是添加或删除数据.否则你的dataProvider和listHandler将不会使用相同的列表..
别 :
taskDataProvider.setList(newList);
Run Code Online (Sandbox Code Playgroud)
做:
taskDataProvider.getList().add(newItem);
Run Code Online (Sandbox Code Playgroud)