Checkbox 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. 福 酒吧 巴兹 初始状态:未检查任何内容。 输入:勾选栏,然后是baz。 预期结果:检查foo以反映其所有子节点都已检查。 实际结果:foo保持未选中状态。Checkbox GXT Treepanel复选框层叠无法从叶子向上工作,checkbox,tree,cascade,gxt,Checkbox,Tree,Cascade,Gxt,我正在使用带有复选框的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 rem
您可以手动检查是否已检查所有子项,然后再次手动设置其父项的状态。代码如下所示:
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();
}
}
});
tree.addCheckListener(新的CheckChangedListener(){
公共无效checkChanged(CheckChangedEvent事件){
ModelData lastParent=null;
对于(ModelData项:tree.getCheckedSelection()){
BaseTreeModel btm=(BaseTreeModel)项;
if(lastParent!=null&&btm.getParent()==lastParent){
继续;
}
布尔值allChildrenChecked=true;
对于(ModelData ModelData:btm.getParent().getChildren()){
如果(!tree.isChecked(modelData)){
allChildrenChecked=false;
打破
}
}
setChecked(btm.getParent(),allChildrenChecked);
lastParent=btm.getParent();
}
}
});
使用setCheckStyle(CheckCascade.CHILDREN)代码>方法
它会帮助你的