我有可排序的列 A 和 B 。当用户点击列 A 进行排序时,我的结果数据应按列 A 类型进行排序,列 B 将显示相对数据。当用户是单击列 B 进行排序,我的结果数据应通过列 B 类型进行排序,列 A 将显示相对数据。我使用GWT Column Sort和GWT 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());
答案 0 :(得分:1)
有关详细信息,请参阅here。
基本上view.getDataGridResults().getColumnSortList().get(0).getColumn()
将返回用户点击的列。
如果您还想获得其他列(例如,对于多个排序),您还必须检查索引&gt; 0(即get(1).getColumn()
)
获得专栏后,您可以致电view.getDataGridResults().getColumnSortList().get(0).getColumn().isAscending()