加載數據
$('#treeul').tree({
checkbox:true,
url:'initTree.aspx',
onLoadSuccess:function(){
//綁定權限
$.ajax({
url:'getId.aspx?id='+v,
cache:false,
dataType:'text',
success:function(data){
var array = data.split(',');
for(var i=0;i<array.length;i++)
{
var node = $('#treeul').tree('find',array[i]);
$('#treeul').tree('check',node.target);
}
}
})
}
});
cache必須設置爲false,意思爲不緩存當前頁,否則更改權限後綁定的權限還是上一次的操作結果.
dataType表示獲取服務器發送的數據,"text"表示純文本
$('#savebtn').click(function(){
$.ajax({
url:'nodeHandler.ashx?pnodes='+GetNode('fnode')+ '&cnodes='+GetNode('child') +'&id='+v,
cache:false,
success:function(data){
eval('data='+data);
if(data.success){
alert('保存成功');
window.location.href='Permission.aspx';
}
}
})
});
保存的時候,也必須將cache設置爲false
GetNode方法
參數代表:父節點或子節點
function GetNode(type){
var node = $('#treeul').tree('getChecked');
var cnodes='';
var pnodes='';
var prevNode=''; //保存上一步所選父節點
for(var i=0;i<node.length;i++){
if($('#treeul').tree('isLeaf',node[i].target)){
cnodes+=node[i].id+',';
var pnode = $('#treeul').tree('getParent',node[i].target); //獲取當前節點的父節點
if(prevNode!=pnode.id) //保證當前父節點與上一次父節點不同
{
pnodes+=pnode.id+',';
prevNode = pnode.id; //保存當前節點
}
}
}
cnodes = cnodes.substring(0,cnodes.length-1);
pnodes = pnodes.substring(0,pnodes.length-1);
if(type=='child'){return cnodes;}
else{return pnodes};
};
綁定tree的時候,只需要綁定子節點就可以了,父節點是根據子節點的狀態決定是否選中的。一個父節點有2個子節點,如果我只綁定一個子節點,那麼父節點的選擇狀態就不是“√”,如果2個子節點都有綁定的話,那麼父節點的選中狀態就是"√"