2010-07-19 2 views
0

저는 개찰구에 익숙하지 않아 메일 링리스트에 관한 정보를 담고있는 간단한 개찰구를 만들려고합니다. 이 메일 링리스트는 특정 편지와 관련이 있습니다.트리를 초기화 할 때 Wickets TreeTable 노드 확장하기

  • MailingListDto 1
    • 사용자 1 사용자 2
  • MailingListDto 2
    • 사용자 3
    • 사용자 4

기존 편지를 편집하는 경우 해당 편지와 관련된 메일 링리스트가 into mailingListCollection으로 가져오고 트리의 해당 노드를 선택하고 확장해야합니다. 웬일인지 나는이 일을하는 것처럼 보이지 않는다.

선택한 노드와 확장 된 노드가 UI에서 선택되거나 확장되지 않은 것처럼 표시되지만, 예를 들어 onAfterRender()과 같이 선택된 노드를 프로그래밍 방식으로 탐색하고 선택한 확장 된 값을 기록하면 노드가 확장되어 선택됩니다.

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

도 확장하려면 루트 노드의 첫 번째 자식은 이전의 것들에 다음 줄을 추가합니다 :

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

 
    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); 
+0

메일 링리스트로 가져 가려고 할 수 있습니다. 저는 트리 구성 요소를 사용한 적이 없으며 너무 적은 개찰 사용자가 SO를 사용하는 것 같습니다. – ireddick

+0

이것에 대한 해결책을 생각해 본 적이 있습니까? 비슷한 문제가 있습니다. – psicopoo

+0

TreeTable에 적합한 솔루션을 찾지 못해 완전히 다른 접근 방식을 사용하게되었습니다. – Sand

답변

0

은 트리의 루트 노드를 확장 "대상"노드의 모든 부모 노드를 확장해야합니다. 그렇지 않으면 화면에서 축소 된 부모로 인해 대상 노드가 숨겨집니다.

-1

wicket 1.5.10

소스 코드

wicket 6

봐. FooExpansion.java 클래스는 expandAll() 메서드입니다.

FooExpansion.java는 개인 클래스에 사용됩니다. FooExpansionModel.java는 AdvancedTreePage.java에서 사용됩니다.

그래서 간단한 솔루션, 초기화가 당신의 나무 (AdvancedTreePage.java에서) 할 수있을 때 :

FooExansionModel 모델 = 새로운 FooExpansionModell()

나무 = createTree (제공 모델);

((FooExpansion) model.getObject()). expandAll();

관련 문제