首页 > 解决方案 > Vaadin 10+ 树形网格:层次结构及其工作原理?

问题描述

我一直在尝试做一个具有更复杂层次结构的 Vaadin 树网格。由于这个框架的文档非常模糊并且感觉有点不完整,我发现这个博客帖子帮助我只是让多个孩子成为一个单一的父母。

但是,我想要一个更复杂的系统,让孩子们拥有自己的分支(孩子的孩子?)。

例如:

例子

所以现在我被这段代码困住了,我不确定我是否走对了路。

        TreeGrid<TreeDto> grid = new TreeGrid<>(TreeDto.class);
        grid.setHierarchyColumn("name");

        List<TreeDto> parenlist = new ArrayList<TreeDto>();
        List<TreeDto> childList = new ArrayList<TreeDto>();
        for(DataDepartment department : departmentLists) 
        {
            TreeDto parent = new TreeDto(department.getDepName(), null);
            for(DataGeneralSection section: sectionList) 
        {
                childList.add(new TreeDto(section.getSection(), parent));
            }
            parenlist.add(parent);
        }

        List<TreeDto> newList = new ArrayList<TreeDto>(parenlist);
        newList.addAll(childList);

        newList.forEach(p -> grid.getTreeData().addItem(p.getParent(), p));
        abteilungenTabs.add(grid);

有人知道如何实现我想要的层次结构吗?

标签: javavaadintreegridvaadin-grid

解决方案


您可以继续更深入地使用当前方法。如果您有很多项目,您可能需要考虑像 Simon Martinelli 建议的数据提供者。

public class MainView extends VerticalLayout {

    public MainView() {
        TreeGrid<TreeItem> treeGrid = new TreeGrid<>();
        treeGrid.addHierarchyColumn(TreeItem::getValue);

        setSizeFull();
        treeGrid.setSizeFull();

        for (Company company: getCompanies()) {
            TreeItem companyItem = new TreeItem(company.getCompanyName());
            treeGrid.getTreeData().addItem(null, companyItem);

            for(Department department: company.getDepartments()) {
                TreeItem departmentItem = new TreeItem(department.getName());
                treeGrid.getTreeData().addItem(companyItem, departmentItem);

                for(Employee employee: department.getEmployees()) {
                    TreeItem employeeItem = new TreeItem(employee.getFullName());
                    treeGrid.getTreeData().addItem(departmentItem, employeeItem);
                }
            }
        }

        add(treeGrid);
    }
}

推荐阅读