Не хочу загружать изображения во время сортировки или подкачки в GWT 2.4 CellTable
Я использую GWT 2.4 и создал CellTable:
table = new CellTable<Home>();
pager = new SimplePager(SimplePager.TextLocation.LEFT);
idColumn = new TextColumn<Home>() {
@Override
public String getValue(Home home) {
return home.getHomeId();
}
};
idColumn.setSortable(true);
TextColumn<Home> addressColumn = new TextColumn<Home>() {
@Override
public String getValue(Home home) {
return home.getAddress();
}
};
postcodeColumn = new TextColumn<Home>() {
@Override
public String getValue(Home home) {
return home.getPostcode();
}
};
postcodeColumn.setSortable(true);
TextColumn<Home> productColumn = new TextColumn<Home>() {
@Override
public String getValue(Home home) {
return home.getProduct();
}
};
table.addColumn(uriColumn, "");
table.addColumn(idColumn, "HomeID");
table.addColumn(addressColumn, "Address");
table.addColumn(postcodeColumn, "Postcode");
table.addColumn(productColumn, "Product");
table.setVisibleRange(0,10);
pager.setDisplay(table);
final AsyncDataProvider<Home> dataProvider = new HomesDataProvider();
// Connect the list to the data provider.
dataProvider.addDataDisplay(table);
ColumnSortEvent.AsyncHandler columnSortHandler = new ColumnSortEvent.AsyncHandler(table);
table.addColumnSortHandler(columnSortHandler);
// default sort on the home id
table.getColumnSortList().push(idColumn);
который, как вы можете видеть, также использует AsyncDataProvider для извлечения данных и SimplePager для разбивки на страницы.
AsyncDataProvider выглядит следующим образом:
private class HomesDataProvider extends AsyncDataProvider<Home> {
@Override
protected void onRangeChanged(HasData<Home> homeData) {
final int start = homeData.getVisibleRange().getStart();
int length = homeData.getVisibleRange().getLength();
final ColumnSortList sortList = table.getColumnSortList();
JSONObject searchParametersJson = null;
if (sortList != null && sortList.size() > 0) {
ColumnSortList.ColumnSortInfo sortColumn = sortList.get(0);
String sortDirection = (sortColumn.isAscending()) ? "asc" : "desc";
Column<?, ?> column = sortColumn.getColumn();
int sortColumnIndex = -1;
if (column.equals(idColumn)) {
sortColumnIndex = 2;
} else if (column.equals(postcodeColumn)) {
sortColumnIndex = 4;
}
searchParametersJson = getSearchCallParameters(start, length, sortColumnIndex, sortDirection);
}
RPC.fetchHomes(searchParameters, CookieManager.getUsername(), new CallbackAction<SearchResultList<Home>>() {
@Override
public void execute(SearchResultList<Home> results) {
if (results != null && results.getResultList().size() > 0) {
updateRowCount(results.getTotalRecords(), true);
updateRowData(start, results.getResultList());
}
}
});
}
}
Таблица отображается нормально и данные верны. Проблема заключается в том, что когда я нажимаю, чтобы отсортировать столбец или просмотреть другую страницу на пейджере, изображение загрузки отображается до тех пор, пока данные не будут загружены. Клиент сказал, что это слишком резко и отвлекает, и он предпочел бы изменить отображение со старого набора строк на новый набор строк без предварительной очистки таблицы, как показано в демонстрации http://samples.gwtproject.org/samples/Showcase/Showcase.html. Как я могу это сделать?
Я пробовал table.setLoadingIndicator(null); и это останавливает показ счетчика, но он все еще очищает таблицу перед загрузкой новых данных.