Mise à jour de la Grille avec un nouvel ensemble de données, en Vaadin 7.4 application
Dans le nouveau Vaadin 7.4 libération, la nouvelle Grille
widget a fait ses débuts comme une alternative à la vénérable Table
.
Après l'obtention d'une Grille affichée, plus tard, je veux remplacer l'ensemble complet de données avec de nouvelles données. Plutôt que de mettre à jour les différentes lignes, je veux simplement les remplacer.
M'arrive d'être en utilisant un BeanItemContainer
pour faciliter la lecture seule de l'affichage de certains objets avec des JavaBeans style des méthodes de lecture.
OriginalL'auteur Basil Bourque | 2015-03-23
Vous devez vous connecter pour publier un commentaire.
J'ai envisagé deux approches:
BeanItem
objets avecConteneur::removeAllItems
méthode.BeanItem
objets avec laBeanItemContainer::addAll
méthode.BeanItemContainer
.Grille::setContainerDataSource
et passer une nouvelle instance deBeanItemContainer
construit avec de nouvelles données.Ci-dessous est un exemple d'application (Vaadin 7.4.2) montrant les deux approches. Une paire identique de la Grille de widgets apparaissent. Chacun a un bouton qui met à jour les données.
Résultats
La première approche (suppression d'éléments et d'ajouter des éléments). Les frais de données apparaît immédiatement.
La deuxième approche (en remplacement du conteneur plutôt que d'éléments) semble comme il devrait fonctionner, avec rien de contraire suggéré dans le peu de documentation. Mais rien ne se passe. Aucune des exceptions ou des erreurs se produisent, mais pas de frais de données s'affiche. J'ai ouvert Ticket # 17268 sur Vaadin trac pour cette question.
Peut-être il y a d'autres meilleurs moyens. Veuillez poster ou commenter avec les solutions de rechange.
Exemple D'Application
Trois classes sont affichées ci-dessous. Vous devriez être en mesure de copier-coller dans un nouveau Vaadin 7.4.x app.
Je utiliser Java 8 Lambda de la syntaxe et de la nouvelle java.les classes de temps. Vous devrez peut-être modifier vos paramètres du projet pour l'utilisation de Java 8. Dans NetBeans 8 qui signifie
Project > Properties > Sources > Source/Binary Format (popup menu) > 1.8
.MyUI.java
Obtenir votre Vaadin application va.
AstronomersLayout.java
La partie principale de l'exemple.
Astronomer.java
Les données, le haricot éléments, stockée dans un BeanItemContainer pour afficher dans une Grille.
Imbriquée Enum fournit un moyen plus sûr pour désigner les noms de champ dans l'autre classe,
AstronomersLayout
appel àsetColumnOrder
.markAsDirty(Recursive)
appels. j'utilise actuellementgrid.setRowStyleGenerator(null)
de pirater autour d'elle.OriginalL'auteur Basil Bourque
Vous pouvez simplement obtenir le document que vous avez supprimés de bouton par clickListener avec
.getSelectedRow()
.Après cela, vous pouvez retirer votre article à partir de votre grille avec
.removeItem()
.IE:
Bye!
OriginalL'auteur Leviand