使用AsyncDataProvider进行多列ColumnSorting

时间:2014-06-04 11:59:18

标签: java gwt gwt2 gwt-celltable

我有可排序的列 A B 。当用户点击列 A 进行排序时,我的结果数据应按列 A 类型进行排序,列 B 将显示相对数据。当用户是单击列 B 进行排序,我的结果数据应通过列 B 类型进行排序,列 A 将显示相对数据。我使用GWT Column SortGWT DataGrid将列排序作为AsyncDataProvider示例。这个例子显示单列排序,我想使用一个或多个列排序,但我不知道如何确定 哪个列被触发列排序事件?

在我的RPC方法中,

    AsyncHandler handler = new AsyncHandler(myGridTable);
    myGridTable.addColumnSortHandler(handler);
    myGridTable.getColumnSortList().push(A_column);
    myGridTable.getColumnSortList().push(B_column);

    AsyncDataProvider<AdminModel> provider = new AsyncDataProvider<AdminModel>() {
        protected void onRangeChanged(final HasData<AdminModel> display) {
            final int start = display.getVisibleRange().getStart();
            int length = display.getVisibleRange().getLength();

            AsyncCallback<String> callback = new AsyncCallback<String> {
                public void onFailure(final Throwable caught) {
                    Window.alert(caught.getMessage());
                }
                public void onSuccess(final String result) {
                    ........
                    updateRowData(start, adminList);
                }
            };
            final ColumnSortList sortList = myGridTable.getColumnSortList();
            // Here to determine which column sort

            // send request to server
        }
    };

    provider.addDataDisplay(view.getDataGridResults());

1 个答案:

答案 0 :(得分:1)

有关详细信息,请参阅here

基本上view.getDataGridResults().getColumnSortList().get(0).getColumn()将返回用户点击的列。

如果您还想获得其他列(例如,对于多个排序),您还必须检查索引&gt; 0(即get(1).getColumn()

获得专栏后,您可以致电view.getDataGridResults().getColumnSortList().get(0).getColumn().isAscending()

查看方向