2011-03-07 3 views
0

확인란이있는 GXT TreePanel을 사용하고 있습니다. 체크 상태가 잎에서 부모 노드로 올바르게 연결되도록 구성하는 방법이없는 것으로 나타났습니다. 예 :GXT Treepanel 체크 박스가 나뭇잎에서 작동하지 않습니다.

 
foo 
    bar 
    baz 

Initial state: nothing checked. 
Input: check bar, then baz. 
Expected result: foo gets checked to reflect that all its child nodes are checked. 
Actual result: foo remains unchecked. 

답변

1

모든 하위 항목이 선택되어 있는지 수동으로 확인한 다음 수동으로 다시 부모의 상태를 일치로 설정할 수 있습니다.

tree.addCheckListener(new CheckChangedListener<ModelData>() { 
    public void checkChanged(CheckChangedEvent<ModelData> event) { 
    ModelData lastParent = null; 
    for (ModelData item : tree.getCheckedSelection()) { 
     BaseTreeModel btm = (BaseTreeModel)item; 
     if (lastParent != null && btm.getParent() == lastParent) { 
      continue; 
     } 
     boolean allChildrenChecked = true; 
     for (ModelData modelData : btm.getParent().getChildren()) { 
      if (!tree.isChecked(modelData)) { 
       allChildrenChecked = false; 
       break; 
      } 
     } 
     tree.setChecked(btm.getParent(), allChildrenChecked); 
     lastParent = btm.getParent(); 
    } 
    } 
}); 
0

사용 setCheckStyle(CheckCascade.CHILDREN); 방법 : 코드는 다음과 같은 것이다.

도움이 될 것입니다.

관련 문제