树形结构类控件对dataloader加载行数限制 maxResults 的支持不好的问题

具有树形结构的控件,如tree、treeTable、treeGrid,当绑定的dataloader的 maxResults 设置数小于数据条数,且当前页未请求到的数据中,包含有当前页的上级条目时,当前页中的下级条目会以一级条目的方式显示出来,例如:

数据:当 maxResults 设置为5,且查询到的数据为 A、A1、A2、B2、B3,则加载后A、A1、A2可以正常显示层级结构,B2、B3则会被显示成一级条目

A
A1
A2
B
B1
B2
C
C1
C2

这是正常行为,因为此时 B2、B3 的 hierarchyProperty 指向的父节点并不在数据中,所以将 B2、B3 作为父节点了。
这里需要你自己对取出的数据进行正确的排序和过滤,再交给树组件展示。

树形结构控件作为基础功能组件,将数据控制/过滤逻辑交给用户确实无可厚非。
但是,楼主所描述的,“当叶子节点需要被显示时,该叶子节点的所有父节点都进行显示“这种情形,更符合使用习惯和树形结构的惯常使用场景。

1 个赞

这就是做基础组件正确的思路。提供一定的规则和使用方法,不要限制用户。毕竟我们提供的不是零代码平台,程序员有根据业务需要提供正确数据的义务。

是的,此时楼主(或者其他程序员)就应该把叶子节点的父节点都选出来。如果限制该场景为通用场景,而需求提出“若只有一个叶子节点则直接显示叶子节点即可”,此时又该如何?

还是上面的那句话,作为基础组件,只负责按照提供的数据进行展示即可。至于数据该如何组织,如何展示,交给程序员。