基于树选择的ADF过滤表

时间:2017-08-03 22:29:58

标签: oracle tree oracle-adf

如何根据树选择过滤Oracle ADF表内容?

绑定:

Bindings

因此表总是渲染,好像在树中选择了第一个项目,但当我点击其他一些VariablePoint时,表格不会改变:

Table which does not change when selection changes

更新

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

Configuring Target Data Source

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

1 个答案:

答案 0 :(得分:0)

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

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

因此,即使您从应用程序模块数据控件中删除了所有迭代器而不是OrgView1Iterator,您的树仍然可以正常工作(此时不会谈到右表)。

现在让你的案子工作。

  1. 在您的应用程序模块数据控件中,您只需要此层次结构:
    • OrgView1
    • VariablePointViewOrgZoneVariable
      • VariablePointViewOrgZoneVariableVariablePoint
  2. OrgView1和VariablePointViewOrgZoneVariable处于根级别。 VariablePointViewOrgZoneVariableVariablePoint是VariablePointViewOrgZoneVariable的子节点。 应该从数据控制中删除OrgView1的所有当前子项。

    1. 在“可执行文件”部分的页面绑定中,单击“绿色加号”并添加VariablePointViewOrgZoneVariable迭代器(例如,VariablePointViewOrgZoneVariable1Iterator)。
    2. 在你的可执行文件中应该有3个迭代器:OrgView1Iterator,VariableDataView1Iterator和VariablePointViewOrgZoneVariable1Iterator。

      1. 过滤的关键部分是Target Data Source属性。您可以在树绑定中找到它。 在Bindings部分的页面绑定中,双击OrgView1。在树级规则中,选择VariablePointViewOrgZoneVariable树并在底部公开目标数据源。 单击EL Picker,选择VariablePointViewOrgZoneVariable1Iterator并单击确定。
      2. 结果应为$ {bindings.VariablePointViewOrgZoneVariable1Iterator}。

        1. 在您的页面设置表的partialTrigger属性上指向树。
        2. 重新启动页面后,过滤应该有效。

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

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