需求:EXTJS定义的一个树,后台返回JSON中的结点带有disable属性(非叶子结点也有可能)。要求能移除disabled的节点。
方案:
function getDisabledNode(tree,node){
var p = null
if(null !=(p= node.firstChild)){
getDisabledNode(tree,p)
}else{
if(node.disabled){
p = node.parentNode
p.removeChild(node)
getDisabledNode(tree,p)
}
if(node == tree.getRootNode()){
return true
}
}
try{
getDisabledNode(tree,node.nextSibling)
}catch(e){}
}
EXT中定义tree 并增加一个按钮执行: getDisabledNode(tree,tree.getRootNode().firstChild)
//树节点不可用
notifyDrop : function(ddSource, e, data){
var record = new blankRecord({
name : ddSource.dragData.node.attributes.text,
});
//alert(ddSource.dragData.node.attributes.text);
//var rows = firstGrid.getSelectionModel().getSelections();
ddSource.dragData.node.disable(); //节点不可用
firstGridStore.add(record);
return(true);
}