基于树选择的 ADF 过滤器 table

ADF filter table based on tree selection

如何根据树选择筛选 Oracle ADF table 内容?

绑定:

所以 table 总是呈现为好像第一个项目会在树中被选中,但是当我点击其他一些 VariablePoint 时,table 不会改变:

更新

根据答案,我能够配置以下内容,并解决了问题:

我为每个树级别规则制作了一个迭代器,并将它们用作每个 tree/tree 级别规则的目标数据源。

ADF 树可能看起来有些误导,但它们实际上并不反映您在应用程序模块中创建的数据控件(迭代器)。树在视图 links 访问器上工作。这就是为什么当您 select 树节点时,迭代器不会得到任何更改。

如果您想在模型项目中查看访问器,请在层次结构中使用的任意两个相邻视图对象之间打开一个视图 link。在 Relationship - Accessors - Destination 中,您将看到 Accessor Name 参数。它的值将是较低树级别的名称。您将在相应级别的树级别规则部分的 pageDef 树绑定中看到相同的名称。

因此,即使您从应用程序模块数据控件中删除了除 OrgView1Iterator 之外的所有迭代器,您的树仍然可以正常工作(目前不谈论右侧的 table)。


现在让你的案子奏效。

  1. 在您的应用程序模块数据控件中,您只需要这个层次结构:
    • OrgView1
    • VariablePointViewOrgZoneVariable
      • VariablePointViewOrgZoneVariableVariablePoint

OrgView1 和 VariablePointViewOrgZoneVariable 处于根级别。 VariablePointViewOrgZoneVariableVariablePoint 是 VariablePointViewOrgZoneVariable 的子项。 OrgView1 的所有当前子项都应从数据控件中删除。

  1. 在 Executable 部分的页面绑定中,单击绿色加号并添加 VariablePointViewOrgZoneVariable 迭代器(例如,VariablePointViewOrgZoneVariable1Iterator)。

在您的 Executable 中应该有 3 个迭代器:OrgView1Iterator、VariableDataView1Iterator 和 VariablePointViewOrgZoneVariable1Iterator。

  1. 过滤的关键部分是目标数据源属性。您可以在树绑定中找到它。 在绑定部分的页面绑定中,双击 OrgView1。在树级别规则 select VariablePointViewOrgZoneVariable 树中,并在底部公开目标数据源。 单击 EL Picker,select VariablePointViewOrgZoneVariable1Iterator 并确定。

结果应该是 ${bindings.VariablePointViewOrgZoneVariable1Iterator}。

  1. 在您的页面上将 table 的 partialTrigger 属性设置为指向树。

重新启动页面过滤后应该会起作用。


我做了一个小例子来展示你的情况。 按照说明进行操作,您可以 运行 在您的计算机上或阅读自述文件。它还将 selection 应用于最后一个树级别,您可能不需要。

https://github.com/ILyaCyclone/adf-tree-to-table-filterandselect