Детальная форма не синхронизируется с деревом ADF на основе одного объекта рекурсивного представления

Я работаю над формой, имеющей дерево, основанное на одном объекте рекурсивного представления, я создал дерево и подробную форму, основанные на одном и том же объекте рекурсивного представления.

Проблема заключается в том, что когда страница запускается, она синхронизировать форму детали только с самыми верхними узлами дерева. Когда я выбираю любой подузел в дереве, в форме сведений выбранная запись не отображается.

Любая помощь будет высоко оценена.


person Taher Elhossin    schedule 29.06.2015    source источник


Ответы (2)


В привязке дерева (файл привязок adf) вы должны установить атрибут «Целевой источник данных», чтобы он указывал на ваш итератор:

http://www.oracle.com/technetwork/developer-tools/adf/learnmore/50-synchromize-form-treeselection-169192.pdf

https://technology.amis.nl/2008/09/23/nice-little-feature-in-adf-11g-target-data-source-attribute-on-tree-binding-helps-synchronize-page-with-tree-node-selection/

person Florin Marcus    schedule 29.06.2015
comment
Я так делаю, но это работает не со всеми уровнями дерева. он просто работает с родительским узлом... я думаю, проблема в правиле рекурсивного узла - person Taher Elhossin; 29.06.2015
comment
Я помню, как использовал это решение в прошлом без проблем. - person Florin Marcus; 29.06.2015
comment
Вы пробовали пример из второй ссылки, которую я предоставил? Это работает, как ожидалось? - person Florin Marcus; 01.07.2015

У меня тот же сценарий, и я решил его с помощью вторичного экземпляра того же ВО и построил на нем форму. как бы то ни было, я добавил некоторый код в прослушиватель выбора дерева, чтобы выполнить синхронизацию. Обращение к газете № 50 мне тоже очень помогло.

        Utilities.invokeEL("#{bindings.PlnFormTitle.treeModel.makeCurrent}", new Class[] { SelectionEvent.class },
                       new Object[] { selectionEvent });

    RowKeySet addedSet = selectionEvent.getAddedSet();
    Iterator it = addedSet.iterator();
    List<Key> keyList = (List<Key>) it.next();
    Key k = keyList.get(keyList.size() - 1);

    OperationBinding setCurrentRowWithKey = commonBindingOperation.getOperatioBinding("setCurrentRowWithKey");
    setCurrentRowWithKey.getParamsMap().put("rowKey", k.toStringFormat(true));

    setCurrentRowWithKey.execute();

этот код я использовал для синхронизации.

person Ali Honarmand    schedule 08.07.2017