GWT DataGrid setLoadingIndicator не имеет никакого эффекта - PullRequest
7 голосов
/ 02 марта 2012

Я пытаюсь использовать функцию GWT DataGrid для отображения анимированного GIF-файла при загрузке данных из вызова RPC на сервер.

Я нигде не нашел ни одного ресурса. Поддержка этого очень плохая.

Я инициализирую свою DataGrid, используя:

myDataGrid.setLoadingIndicator(new Image(/*my ImageResource object*/);

и во время выполнения программы я использую:

myDataGrid.fireEvent(new LoadingStateChangeEvent(LoadingState.LOADING));

когда я хочу перевести DataGrid в состояние «ЗАГРУЗКА», то есть непосредственно перед вызовом RPC, а затем:

myDataGrid.fireEvent(new LoadingStateChangeEvent(LoadingState.LOADED));

сразу после заполнения сетки данными.

Это не работает. Я не вижу никаких изменений в DataGrid, я не вижу анимированный GIF, он просто остается неизменным во время процесса. Я что-то не так делаю?

Пожалуйста, помогите.

Ответы [ 3 ]

9 голосов
/ 03 марта 2012

Если вы позвоните updateRowCount(0, false), отобразится изображение загрузки.

1 голос
/ 05 марта 2013

У меня есть несколько DataGrids в моем приложении, и я использую приведенный ниже фрагмент кода для всех них.Сначала необходимо очистить данные, чтобы в сетке было 0 записей, а затем установить для числа строк значение больше нуля.Обратите внимание, что индикатор загрузки анимирован только во время получения данных через RPC.Как только сетка визуализируется (что также может занять некоторое время), анимация останавливается.

    // Only required if you are using a pager
    int pageSize = pager.getPageSize();

    // This will trigger the onRangeChanged-event and call
    // the data provider
    dataGrid.setVisibleRangeAndClearData(new Range(0, 1), true);
    // Together with the row above, this will show the loading-indicator
    // in the data grid
    dataGrid.setRowCount(1);

    // Usually, the data is loaded when the data grid is initialized.
    // In my application, the user has to enter some input first and
    // then (re-)load the data via a button.
    // If you want your data grid to be filled when it is intialized,
    // simply remove the if-block
    if (dataProvider.getDataDisplays().size() == 0) {
        dataProvider.addDataDisplay(dataGrid);
    }

    // This will re-set the paging (only required if you are using a pager)
    dataGrid.setPageSize(pageSize);
0 голосов
/ 08 мая 2016

Я не уверен, в какой версии он был добавлен, но в 2.8.0-бета1 я использую dataGrid.setRowCount(0, false) для достижения чего-то подобного.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...