首页 > 解决方案 > Vaadin 8 TreeGrid - 是否可以对叶/子元素进行多选,并且父母不能选择?

问题描述

Vaadin 8 使用了网格。树形网格是根元素可以附加叶元素(子元素)的地方。就我而言,我想要多选的网格功能 - 给每一行一个复选框以允许选择多行,但我不希望用户能够选择网格中的父/根元素。如何从多选中禁用树网格中的根元素,并且只允许多选叶元素?

标签: vaadin

解决方案


您无法完全阻止选择,但您可以在发生任何不需要的选择时立即取消选择:

        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);
            }
        });

推荐阅读