Дърветата на ADF може да изглеждат донякъде подвеждащи, но те всъщност не отразяват контролите за данни (итератори), които сте създали във вашия модул на приложение. Дърветата работят върху аксесоарите за преглед на връзки. Ето защо, когато изберете възел на дърво, итераторите не получават никакви промени.
Ако искате да видите вашите инструменти за достъп във вашия проект за модел, отворете връзка за изглед между всеки два съседни обекта за изглед, използвани във вашата йерархия. В Връзка - Достъпници - Дестинация ще видите параметър Име на достъпа. Стойността му ще бъде името на по-ниското ниво на дървото. Същото име, което ще видите във вашето обвързване на дървото pageDef в секцията Правила на ниво дърво за съответното ниво.
Така че дори ако изтриете всички итератори освен OrgView1Iterator от контрола на данните на вашия модул на приложението, вашето дърво ще продължи да функционира (без да говорим за таблицата вдясно в момента).
Сега, за да накарате вашия случай да работи.
- В контрола на данните на модула на приложението ви ще ви е необходима само тази йерархия:
- OrgView1
- VariablePointViewOrgZoneVariable
- VariablePointViewOrgZoneVariableVariablePoint
OrgView1 и VariablePointViewOrgZoneVariable са на основно ниво. VariablePointViewOrgZoneVariableVariablePoint е дете на VariablePointViewOrgZoneVariable. Всички текущи деца на OrgView1 трябва да бъдат премахнати от контрола на данните.
- В обвързването на вашата страница в раздела за изпълними щракнете върху зелен плюс и добавете итератор VariablePointViewOrgZoneVariable (да речем VariablePointViewOrgZoneVariable1Iterator).
Във вашите изпълними файлове трябва да има 3 итератора:OrgView1Iterator, VariableDataView1Iterator и VariablePointViewOrgZoneVariable1Iterator.
- Ключовата част от филтрирането е атрибутът Target Data Source. Можете да го намерите във вашето дървовидно обвързване. Във вашето обвързване на страницата в секцията Обвързвания щракнете двукратно върху OrgView1. В правилата на ниво дърво изберете VariablePointViewOrgZoneVariable дърво и разкрийте Target Data Source в долната част. Щракнете върху EL Picker, изберете VariablePointViewOrgZoneVariable1Iterator и OK.
Резултатът трябва да бъде ${bindings.VariablePointViewOrgZoneVariable1Iterator}.
- На вашата страница задайте атрибута partialTrigger на таблицата да сочи към дървото.
След като рестартирате страницата си, филтрирането трябва да работи.
Направих малък пример, показващ вашия случай. Следвайте инструкциите и можете да го стартирате на вашия компютър или просто да прочетете readme. Той също така прилага селекция към последното дървовидно ниво, което може да не ви е необходимо.
https://github.com/ILyaCyclone/adf-tree-to-table -филтриране и избор