Vaadin 8 TreeGrid - возможно ли иметь множественный выбор для листовых / дочерних элементов, и родители не могут быть выбраны? - PullRequest
0 голосов
/ 31 марта 2020

Vaadin 8 использует сетки. Сетка дерева - это то место, где к элементам root могут быть прикреплены элементы листа (дочерние элементы) В моем случае, я хочу, чтобы сетка имела функции множественного выбора - давая каждой строке флажок, позволяющий выбирать несколько строк, но я не хочу, чтобы пользователь мог выбирать родительские / root элементы в сетке. Как отключить root элементы в древовидной сетке из множественного выбора, и разрешить только множественный выбор листовых элементов?

1 Ответ

1 голос
/ 31 марта 2020

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

        treeGrid.addSelectionListener(e -> {
            Set<HierarchicalBean> allSelectedItems = e.getAllSelectedItems();
            Set<HierarchicalBean> toRemove = new HashSet<>();
            for (HierarchicalBean b : allSelectedItems) {
                if (!b.hasParent()) {
                    toRemove.add(b);
                }
            }
            for (HierarchicalBean beanToRemove : toRemove) {
                treeGrid.deselect(beanToRemove);
            }
        });
...