2016-06-06 1 views
0

В этом случае у меня есть ситуация, когда пользователь запрашивает селектор с двумя столбцами. столбец параметров заполняется на основе выбора поля со списком.Vaadin TwinColSelect удаляет элементы из колонки параметров без удаления выбранных значений столбца

Итак, мне нужно «список опций» для изменения в зависимости от выбора поля со списком. Но я хочу, чтобы выбранные значения оставались неизменными.

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

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

В конце, когда я собираю выбранные значения, он может содержать как местных, так и международных пользователей.

что-то вроде этого.

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

Как это сделать? Я попробовал следующий подход; каким-то образом я могу получить выбранные значения из кода. Но из внешнего интерфейса я могу видеть только выбранные значения из текущего списка опций.

myComboBox.addValueChangeListener(event1 -> { 

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

Если мой вопрос непонятен, оставьте комментарий. Спасибо в продвинутом режиме. :)

+0

Это не ясно. Что должно произойти? Что происходит вместо этого? – Raffaele

+0

Диалог параметров (слева) должен обновляться без изменения чего-либо из правой колонки. – udakarajd

+0

Невозможно. Как можно выбрать значение, если оно отсутствует в доступных? – Raffaele

ответ

0

Я нашел обходное решение. Это не идеально, но он выполняет свою работу.

Это то, что я сделал, прежде чем удалять все элементы, я сохранил выбранные значения. Затем удалите все предметы. После этого я добавил свои «новые значения» и ранее сохранил «выбранные значения» в список элементов.

Тогда можно было установить выбранные значения в список

Object selectedValues=twinSelect.getValue(); 

twinSelect.removeAllItems(); 

twinSelect.addItems(newITemsList); 

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

twinSelect.setValue(selectedValues); 
Смежные вопросы