extjs 그림과 같이 체크박스를 사용하여 트리를 구현하면 부모 노드가 선택되면 모든 자식 노드가 선택됩니다. 루트 노드는 모든 하위 노드가 취소된 경우에만 취소할 수 있습니다.
var Fpanel = new Ext.tree.TreePanel ({
id:'ptree',
지역:'west',
layout:'anchor',
border:false,
rootVisible: false,
root:new Ext .tree.AsyncTreeNode({}),
listeners:{
"checkchange": function(node, state) {
if (node.parentNode != null) {
//하위 노드가 선택됨
node.cascade(function(node){
node.attributes.checked = state;
node.ui.checkbox.checked = state;
return true;
}); >// 상위 노드 선택됨
var pNode = node.parentNode;
if (state || Fpanel.getChecked(id, pNode) == "") {
pNode.ui.toggleCheck(state);
pNode.attributes.checked = state;
}
}
}
}
})
authorityTree(Fpanel)
function(Fpanel) ){
Ext.Ajax.request({
url: 'authorityTree.ashx',
method:'get',
success: function(request) {
var data = Ext. util.JSON .decode(request.responseText);
Fpanel.getRootNode().appendChild(data);
Fpanel.getRootNode().expandChildNodes(true)
>},
failure: function() {
Fpanel.render();
Ext.MessageBox.show({
title: 'Prompt',
msg: '서버가 사용 중입니다. , Firefox를 사용하여 브라우저로 탐색하거나 나중에 다시 시도하십시오! ',
버튼: Ext.MessageBox.OK,
아이콘: Ext.MessageBox.ERROR
})
}
});