/ / GWT DataGrid setLoadingIndicator n'a aucun effet - gwt, datagrid

GWT DataGrid setLoadingIndicator n'a aucun effet - gwt, datagrid

J'essaie d'utiliser la fonctionnalité de GWT DataGrid pour afficher un gif animé lorsque des données sont en cours de chargement depuis un appel RPC vers le serveur.

Je n’ai trouvé aucune ressource, où que ce soit. Le soutien pour cela est vraiment médiocre.

Je inizialise mon DataGrid en utilisant:

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

et pendant le déroulement du programme, j'utilise:

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

lorsque je veux mettre le DataGrid à l'état "LOADING", c'est-à-dire juste avant de passer un appel RPC, puis:

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

juste après que la grille ait été remplie avec des données.

Cela ne fonctionne pas. Je ne vois aucun changement dans le DataGrid, je ne peux pas voir le gif animé, il reste simplement inchangé pendant le processus. Y a-t-il quelque chose que je fais mal?

S'il vous plaît aider.

Réponses:

9 pour la réponse № 1

Si vous appelez updateRowCount(0, false), l'image de chargement sera affichée.


1 pour la réponse № 2

J'ai plusieurs DataGrids dans mon application et jeutilisez l'extrait de code ci-dessous pour chacun d'entre eux. Vous devez d'abord effacer les données, de sorte qu'il n'y ait aucun enregistrement dans la grille, puis définissez le nombre de lignes sur un nombre supérieur à zéro. Veuillez noter que l'indicateur de chargement est uniquement animé lorsque les données sont reçues via RPC. Dès que la grille est rendue (ce qui peut prendre un certain temps), l’animation se fige.

    // 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 pour la réponse № 3

Je ne sais pas dans quelle version il a été ajouté, mais j'utilise 2.8.0-beta1 dataGrid.setRowCount(0, false) pour obtenir quelque chose de similaire.