2016-06-06 4 views
0

Dies ist der Fall, ich habe eine Situation, in der der Benutzer mit einem Zwillingsspaltenwähler aufgefordert wird. Die Spalte Optionen wird basierend auf einer Auswahl eines Kombinationsfelds gefüllt.Vaadin TwinColSelect Elemente aus Optionsspalte entfernen, ohne ausgewählte Spaltenwerte zu entfernen

Also, ich brauche "Optionen Liste" zu ändern, basierend auf Auswahlliste. Aber ich möchte, dass die ausgewählten Werte gleich bleiben.

eg. combo box value = international 
options column is populated international with users. 

combo box value = local 
options column is populated with local users. 

Am Ende, wenn ich die ausgewählten Werte zu sammeln, kann es sowohl lokale als auch internationale Nutzer enthalten.

so etwas wie das.

twinColSelect.removeAllFromLeft(); 
twinColSelect.addItemsToLeft(internationlUsersList); 

Wie archiviere ich das? Ich habe den folgenden Ansatz versucht; irgendwie kann ich die ausgewählten Werte aus dem Code bekommen. Aber vom Frontend aus kann ich nur ausgewählte Werte aus der aktuellen Optionsliste sehen.

myComboBox.addValueChangeListener(event1 -> { 

    Object value = twinColSelect.getValue(); 
    twinColSelect.removeAllItems(); 
    myComboBox.getValue.getUsers().forEach(ob -> twinColSelect.addItem(ob.getUserName())); 
    twinColSelect.setValue(value); 
}); 

Wenn meine Frage nicht klar ist, hinterlassen Sie bitte einen Kommentar. Danke in fortgeschrittenem. :)

+0

Es ist nicht klar festgelegt. Was soll passieren? Was passiert stattdessen? – Raffaele

+0

Die Optionsspalte (links) sollte aktualisiert werden können, ohne etwas in der rechten Spalte zu ändern. – udakarajd

+0

Unmöglich. Wie kann ein Wert ausgewählt werden, wenn er nicht in den verfügbaren Werten enthalten ist? – Raffaele

Antwort

0

Ich habe einen Workaround gefunden. Es ist nicht perfekt, aber es macht den Job erledigt.

Das habe ich gemacht, bevor ich alle Elemente entfernt habe, habe ich die ausgewählten Werte gespeichert. Dann entfernen Sie alle Elemente. Danach fügte ich meine 'neuen Werte' hinzu und speicherte vorher 'ausgewählte Werte' in der Artikelliste.

Dann war es möglich, ausgewählte Werte in die Liste

Object selectedValues=twinSelect.getValue(); 

twinSelect.removeAllItems(); 

twinSelect.addItems(newITemsList); 

(Collection<?>selectedValues.forEach(o ->twinSelect.addItem(o)); 

twinSelect.setValue(selectedValues); 
Verwandte Themen