java - 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);
有人知道如何实现我想要的层次结构吗?
解决方案
您可以继续更深入地使用当前方法。如果您有很多项目,您可能需要考虑像 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);
}
}
推荐阅读
- c++ - 警告 C4552:“>>”:未使用表达式的结果
- macos - 获取有关 iOS 模拟器流量的信息
- java - 在不休眠或阻塞线程的情况下重试任务
- java - Jar 重命名为 .txt:会加载吗?
- javascript - 如何从 vue 和 axios 中的 :href 获取 url?
- javascript - 无穷大最坏情况的大 O 表示法
- javascript - S3图像上传组件在私有路由页面上失败,但不是公共页面
- asp.net-mvc - 例外:超出最大请求长度
- c# - 必须安装 WiX Toolset v3.11(或更新版本)构建工具 - 即使在安装之后
- .net - Hangfire重复工作间歇性工作