treeDataGrid 树形数据网格

treeDataGrid 是一个用来展示层级表格数据的组件,这些数据按照可收放的节点分组。

  • XML 元素:treeDataGrid

  • Java 类:TreeDataGrid

基本用法

treeDataGrid 功能基本上与 dataGrid 组件一致。

在视图 XML 中声明式定义 treeDataGrid 的示例:

<data readOnly="true">
    <collection id="departmentsDc"
                class="com.company.onboarding.entity.Department"> (1)
        <fetchPlan extends="_base">
            <property name="hrManager" fetchPlan="_base"/>
            <property name="parentDepartment" fetchPlan="_base"/>
        </fetchPlan>
        <loader id="departmentsDl">
            <query>
                <![CDATA[select e from Department e]]>
            </query>
        </loader>
    </collection>
</data>
<layout>
    <treeDataGrid id="departmentsTable"
                  hierarchyProperty="parentDepartment"
                  width="100%"
                  minHeight="20em"
                  dataContainer="departmentsDc"> (2)
        <columns> (3)
            <column property="name"/>
            <column property="hrManager"/>
        </columns>
    </treeDataGrid>
</layout>
1 Department 实体的 集合容器
2 treeDataGrid 通过 dataContainer 属性与 departmentsDc 容器绑定。
3 columns 元素定义在树形网格中展示哪些实体属性。
tree data grid basics

XML 属性

hierarchyProperty

hierarchyProperty 是必需属性,定义引用自身实体属性的名称,即树形结构的键值属性。

showOrphans

孤立记录是指不存在的父记录的子记录。通常这是由于过滤或分页,导致从数据库中仅加载了部分数据造成的。

showOrphans 属性用来控制是否显示孤立记录。如果设置为 false,则组件不会显示孤立记录。否则,孤立记录会作为树的顶层根节点展示。

默认值为 false

在使用过滤器时,隐藏孤立记录更符合人们的习惯。但是,这样会导致分页有问题,某些页可能是空的或者只有一半数据,所以在使用树形组件时,最好不要使用 SimplePagination 组件。

事件和处理器

在 Jmix Studio 生成处理器桩代码时,可以使用 Jmix UI 组件面板的 Handlers 标签页或者视图类顶部面板的 Generate Handler 添加,也可以通过 CodeGenerate 菜单(Alt+Insert / Cmd+N)生成。

CollapseEvent

com.vaadin.flow.component.treegrid.CollapseEvent 当节点收起时发送。

ExpandEvent

com.vaadin.flow.component.treegrid.ExpandEvent 当节点展开时发送。

XML 内部元素

参考