我想知道用户是否点击了升序或降序排序的标题。 我怎么能找到它?
此致
答案 0 :(得分:1)
试试这个:
1)创建SortHandler并附加到您的网格
ColumnSortEvent.AsyncHandler sortHandler= new ColumnSortEvent.AsyncHandler(grid);
grid.addColumnSortHandler(sortHandler);
ColumnSortList columnSortList = grid.getColumnSortList();
2)创建你的专栏(TextColumn等),例如:
TextColumn<Dog> yourTextColumn = new TextColumn<Dog>() {
@Override
public String getValue(String object) {
return object;
}
}
3)创建你的标题
Header yourHeader = new Header() {
@Override
public Object getValue() {
return value; // here return header value
}
}
3)将列添加到网格并将ColumnSortInfo推送到列表
grid.addColumn(yourTextColumn, yourHeader);
columnSortList.push(new ColumnSortList.ColumnSortInfo(yourColumn, true));
您可以随时查看here以获取更多有用的示例。
答案 1 :(得分:1)
为了获得排序的方向,您所要做的就是获取ColumnSortList并使用零索引调用方法#get(0)。作为ColumnSortList的文档说“第0项是最近排序的*列的{@link ColumnSortInfo}。”。所以返回的对象(ColumnSortList.ColumnSortInfo)包含有关最后一次单击的列的信息,它有一个名为#isAscending()的方法,它是一个标识方向的标志。
示例代码:
ColumnSortList sortList = dataGrid.getColumnSortList();
ColumnSortList.ColumnSortInfo info = sortList.get(0);
还要注意,此代码块应位于AsyncDataProvider#onRangeChanged中。
还有另一种选择,请考虑以下因素:
columnSortHandler = new ColumnSortEvent.AsyncHandler(table) {
@Override
public void onColumnSort(ColumnSortEvent event) {
List<T> newData = new ArrayList(table.getVisibleItems());
if (event.isSortAscending()) {
Collections.sort(newData, (Comparator)event.getColumn());
} else {
Collections.sort(newData, (Comparator)event.getColumn());
Collections.reverse(newData);
}
table.setRowData(newData);
}
};
table.addColumnSortHandler(columnSortHandler);