加载数据
$('#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个子节点都有绑定的话,那么父节点的选中状态就是"√"