用于排序的GWT DataGrid标头单击事件
我想知道用户是否单击标题进行升序或降序排序。 我怎么能找到呢 关于试试这个: 1) 创建SortHandler并附加到网格用于排序的GWT DataGrid标头单击事件,gwt,Gwt,我想知道用户是否单击标题进行升序或降序排序。 我怎么能找到呢 关于试试这个: 1) 创建SortHandler并附加到网格 ColumnSortEvent.AsyncHandler sortHandler= new ColumnSortEvent.AsyncHandler(grid); grid.addColumnSortHandler(sortHandler); ColumnSortList columnSortList = grid.getColumnSortList(); 2) 创建您的
ColumnSortEvent.AsyncHandler sortHandler= new ColumnSortEvent.AsyncHandler(grid);
grid.addColumnSortHandler(sortHandler);
ColumnSortList columnSortList = grid.getColumnSortList();
2) 创建您的列(文本列等),例如:
3) 将列添加到网格,并将列SORTINFO推送到列表中
grid.addColumn(yourTextColumn, yourHeader);
columnSortList.push(new ColumnSortList.ColumnSortInfo(yourColumn, true));
您可以随时查找更有用的示例。为了获得排序的方向,您所要做的就是获取ColumnSortList并调用方法#get(0)和零索引。正如ColumnSortList的文档所说,“第0项是最近排序的*列的{@linkColumnSortInfo}”。因此,返回的对象(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);
columnSortHandler=newcolumnsortevent.asynchHandler(表){
@凌驾
public void onColumnSort(ColumnSortEvent事件){
List newData=newarraylist(table.getVisibleItems());
if(event.isSortAscending()){
Collections.sort(newData,(Comparator)event.getColumn());
}否则{
Collections.sort(newData,(Comparator)event.getColumn());
集合。反向(新数据);
}
表.setRowData(新数据);
}
};
表.addColumnSortHandler(columnSortHandler);
问题不是如何排序,而是如何知道是否单击了标题!!正如Onkar所提到的,我想知道的是,点击标题是升序还是降序。
ColumnSortList sortList = dataGrid.getColumnSortList();
ColumnSortList.ColumnSortInfo info = sortList.get(0);
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);