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