Расширение узлов калитки TreeTable при инициализации дерева - PullRequest
0 голосов
/ 19 июля 2010

Я довольно новичок в калитке и пытаюсь создать простое дерево калитки, которое содержит информацию о списках рассылки. Этот список рассылки связан с определенным письмом.

  • MailingListDto 1
    • Пользователь 1
    • Пользователь 2
  • MailingListDto 2
    • Пользователь 3
    • Пользователь 4

Если мы редактируем существующее письмо, списки рассылки, связанные с этим письмом, извлекаются into mailingListCollection, и соответствующие узлы в дереве следует выбирать и расширять. По какой-то причине я, кажется, не получаю эту работу.

Выбранные и расширенные узлы не отображаются как выбранные или развернутые в пользовательском интерфейсе, но если я пройду через выбранные узлы программным путем, например, в onAfterRender() и зарегистрирую выбранные и расширенные значения, узлы будут развернуты и выбраны.

    tree = new TreeTable("treeTable", treeModel, treeColumns) {
            @Override
            public void onBeforeRender() {
                super.onBeforeRender();
                if (!mailingListCollection.isEmpty()) {
                    for (MailingListDto mailingList : mailingListCollection) {
                        tree.getTreeState().expandNode(mailingList);
                        tree.getTreeState().selectNode(mailingList, true);
                    }
                }
                tree.updateTree();
            }

            @Override
            protected void onAfterRender() {
                super.onAfterRender();
                if (LOG.isDebugEnabled()) {
                    LOG.debug("onAfterRender: " + tree.getTreeState().getSelectedNodes().size());
                    for (Object obj : tree.getTreeState().getSelectedNodes()) {
                        LOG.debug(tree.getTreeState().isNodeSelected(obj) + "  " + tree.getTreeState().isNodeExpanded(obj));
                    }
                }
            }
    };

    tree.setRootLess(true);
    tree.getTreeState().setAllowSelectMultiple(true);
    add(tree);

Ответы [ 2 ]

0 голосов
/ 15 февраля 2014

калитка 1.5.10

калитка 6

Посмотрите на исходный код.В классе FooExpansion.java используется метод expandAll ().

FooExpansion.java используется в закрытом классе. FooExpansionModel.java используется в AdvancedTreePage.java.

Итак, простое решение, когда инициализироватьдерево (в AdvancedTreePage.java) может быть:

модель FooExansionModel = новая FooExpansionModell ()

дерево = createTree (поставщик, модель);

((FooExpansion) модель. .getObject ()) expandAll ();

0 голосов
/ 07 сентября 2012

Чтобы развернуть только корневой узел вашего дерева:

Object rootObj = myTree.getModelObject().getRoot();
myTree.getTreeState().expandNode(rootObj);

Чтобы развернуть также первый дочерний узел корневого узла, добавьте следующую строку к предыдущим:

myTree.getTreeState().expandNode(myTree.getModelObject().getChild(rootObj, 0));

Обратите внимание, что вам необходимо развернуть все родительские узлы «целевого» узла, иначе на экране целевой узел будет скрыт из-за свернутого родителя.

...