Каскад флажков GXT Treepanel не работает - PullRequest
0 голосов
/ 07 марта 2011

Я использую 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.

Ответы [ 2 ]

1 голос
/ 16 мая 2011

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

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 голосов
/ 27 марта 2012

используйте setCheckStyle(CheckCascade.CHILDREN); метод.

вам это поможет.

...