Vaadin - Tabelle dynamisch erzeugen
Ich habe eine Vaadin-Anwendung. Eine seiner Komponenten ist eine Tabelle. Ich brauche eine Möglichkeit, so viele Spalten, wie der user will (naja, sagen wir mal max. 20 im moment) zu dieser Tabelle. Am Anfang gibt es 5 Spalten, also in der Tat kann der Benutzer hinzufügen Spalte 6 - 20.
Aber nach "layout.addComponent(...)", diese Tabelle ist nicht editierbar mehr.
Ich habe versucht, 2 Dinge:
-
Es ist eine variable, die speichert die aktuelle Anzahl von Zeilen und erhöht sich um 1 für jeden Klick auf eine Schaltfläche "hinzufügen". Mit jedem Klick, 1-Spalte zu der Tabelle Hinzugefügt wird.
-
Andere Idee war, halten Sie die Spalten mit zahlen in einer variable (wie Idee 1) und der Wert der Zellen irgendwo in einer Sammlung (was auch immer). Nach klicken auf die Schaltfläche "hinzufügen", wird die gesamte Tabelle entfernt wird, dann werden alle Spalten Hinzugefügt (alle, die dort gewesen + eine neue) und es wird zum layout Hinzugefügt.
Jedoch keine dieser Ideen arbeitet.
Irgendwelche Vorschläge?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, es sollte genug sein, zum aufrufen
addContainerProperty
auf dieContainer
verknüpft ist, auf IhreTable
. Tun sollte Feuer einPropertySetChangeEvent
auf den Tisch.Es sei denn, natürlich, wenn Sie begrenzt den sichtbaren Spalten mit
Table.setVisibleColumns
.Wenn das nicht hilft, ein Stück code helfen könnte das problem zu lösen.
Wenn MyContainer erstreckt IndexedContainer, haben Sie die volle Freiheit; nur als Beispiel, ich habe Statistiken, die ist einfach nur (dynamische) Map serialisiert in Tierpfleger und MyContainer hört Tierpfleger änderungen:
Wenn wir add new (key, value) - paar auf Karte, wir bekommen neue Spalte wird automatisch, wo "key" ist die Spalte Titel, und "Wert" ist der Wert der Zelle. Keine Bedürfnisse zu rufen "Feuer"; es wird automatisch aufgerufen, durch IndexedContainer Umsetzung (überprüfung von Quellen).