7
votes

GWT Simple Pager Aide

Je suis coincé avec le téléavertisseur de la cellule GWT que je veux attacher à une table cellulaire. Je me cadre comme ceci:

List <ForumMessage> AllMessages=populated from an rpc;
CellTable cellTable = new CellTable  <ForumMessage>();
simplePager = new SimplePager();
cellTable.addColumn(ColumnM);
cellTable.setRowData(0,AllMessages);
simplePager.setDisplay(cellTable);
simplePager.setPageSize(3);


0 commentaires

4 Réponses :


15
votes

J'ai couru dans ce même problème lorsque j'ai essayé d'abord d'utiliser la table cellulaire pour la pagination. Il est mis en œuvre de manière à ce que le téléavertisseur ne fait aucune hypothèse sur votre jeu de données, même après que vous appelle les boutonnages. Ceci est architecturé de cette façon afin que vous puissiez effectuer une chargement paresseuse.

Une fois que vous savez combien de lignes de données sont disponibles, vous devez appeler CellTable.setrowowcount (int) code> et cela corrigera votre problème où Le pager continue à aller. Maintenant, pour mettre en œuvre la pagination, vous devrez également ajouter un RangechangeHandler à la table de cellules pour définir les données. Voici quelques échantillons de code: P>

@Override
public void onRangeChange(RangeChangeEvent event)
{
    Range range = cellTable.getVisibleRange();
    int start = range.getStart();
    int length = range.getLength();
    List<ForumMessage> toSet = new ArrayList<ForumMessage>(length);
    for (int i = start; i < start + length && i < AllMessages.size(); i++)
        toSet.add((ForumMessage) AllMessages.get(i));
    cellTable.setRowData(start, toSet);
}


5 commentaires

J'ai découvert, lorsque vous ne définissez pas CellTable.SetrowCount (INT), cela fonctionne automatiquement. Je peux confirmer avec l'extrait de code si quelqu'un est intéressé.


Qu'est-ce que "résultat" dans l'exemple ci-dessus?


Le résultat devrait être des allmessages ... va réparer ci-dessus.


@ Lineman78 Et si je veux charger la liste d'objets paginés dans la méthode ONrangechange. Je veux dire sans tirer tout enregistrement Atonce de RPC, puis-je toujours coder la pagination. Je connais à l'avance le nombre d'enregistrements.


Vous devriez être capable de définir la taille de votre instanciation et de faire appelle les appels RPC dans la méthode Onrangechanged et appelez SetRowData lorsque vous recevez enfin les données.



4
votes

Il peut être plus facile d'utiliser listDataProvider , au lieu de simplement fournir la liste. Donc, votre exemple serait: xxx


0 commentaires

3
votes

J'ai fait face au même problème, et je n'ai eu que de définir la taille de la page de la cellule et de supprimer la taille de la page du téléavertisseur comme ceci:

List <ForumMessage> AllMessages=populated from an rpc;
CellTable cellTable = new CellTable  <ForumMessage>();
simplePager = new SimplePager();
cellTable.addColumn(ColumnM);
cellTable.setRowData(0,AllMessages);
simplePager.setDisplay(cellTable);
// set the PageSize of the cellTable
cellTable.setPageSize(3);


0 commentaires

-1
votes

voici mon test avec GWT 2.5 - J'utilise asyncdataProvider: xxx


0 commentaires