用于排序的GWT DataGrid标头单击事件

用于排序的GWT DataGrid标头单击事件,gwt,Gwt,我想知道用户是否单击标题进行升序或降序排序。 我怎么能找到呢 关于试试这个: 1) 创建SortHandler并附加到网格 ColumnSortEvent.AsyncHandler sortHandler= new ColumnSortEvent.AsyncHandler(grid); grid.addColumnSortHandler(sortHandler); ColumnSortList columnSortList = grid.getColumnSortList(); 2) 创建您的

我想知道用户是否单击标题进行升序或降序排序。 我怎么能找到呢

关于

试试这个:

1) 创建SortHandler并附加到网格

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);