Как повторно развернуть объекты в vaadin TreeTable

Я пытаюсь повторно расширить объекты в TreeTable после сброса источника данных контейнера для TreeTable, но я не работаю. Кто-нибудь пробовал это раньше? Где я ошибаюсь?

private void setTableDataSource() {
    Set<Object> expandedMap = new HashSet<Object>();
    if(table.getItemIds() != null && !table.getItemIds().isEmpty()){
        for(Object o : table.getItemIds()){         
            if(table.isCollapsed(o))
                expandedMap.add(o);
        }
    }       
    table.setContainerDataSource(ContactContainerFactory.createContainer(model.getParentModel()));
    table.setVisibleColumns(new String[]{"title", "operation", "id", "price"});
    table.setColumnHeaders(getTranslatedTableHeaders());        
    if(!expandedMap.isEmpty()){
        for(Object o : expandedMap){                
            table.setCollapsed(o, false);
        }
    }
}

person Marthin    schedule 10.02.2012    source источник
comment
Какую версию ваадина вы используете? Вы пробовали с последней ночной сборкой? кажется, что они добавили методы, позволяющие свернуть/развернуть все элементы: vaadin .com/forum/-/message_boards/view_message/   -  person Zakaria    schedule 15.02.2012
comment
@Marthin Просто как подсказка, но я уверен, что вы думали о методах hash() и equals().   -  person nexus    schedule 12.03.2013
comment
Пожалуйста, обновите ответ, если вы решили это, Мартин!   -  person Aj Otto    schedule 07.09.2016
comment
@AjOtto Я так и не получил ответа на этот вопрос. Я больше не работаю над этим проектом, поэтому не могу вспомнить, как мы его решили.   -  person Marthin    schedule 07.09.2016


Ответы (1)


Я сделал это так:

summary.getItemIds().forEach(id -> {
    summary.setCollapsed(id, false);
    summary.getChildren(id).forEach(child -> {
        summary.setCollapsed(child, false);
    });
});

Где сводка - это таблица дерева. Это работает только для двухуровневой таблицы, но может быть выполнено рекурсивным методом.

person javydreamercsw    schedule 10.07.2017