Не хочу загружать изображения во время сортировки или подкачки в 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); и это останавливает показ счетчика, но он все еще очищает таблицу перед загрузкой новых данных.

0 ответов

Другие вопросы по тегам