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



我想知道用户是单击标题上升还是下降排序。我怎么能找到它?

问候

尝试以下:

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)将列添加到网格中,然后将列Sortinfo推入列表

grid.addColumn(yourTextColumn, yourHeader);
columnSortList.push(new ColumnSortList.ColumnSortInfo(yourColumn, true));

您随时可以在这里寻找更多有用的示例。

为了获得订购的方向,您要做的就是获取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);

最新更新