//在頁面載入中:onLoad="Loadtreeview()";//伺服器端載入時註冊treeview的check的事件: TreeView1.Attributes.Add("oncheck","tree_oncheck(TreeView1)");<script language="javascript"> function Loadtreeview() //載入樹形 ...{ var AllRootNode=new Array(); AllRootNode=document.getElementById("TreeView1").getChildren();//獲得treview的最外層節點數組 CheckboxLoad(AllRootNode); //載入checkbox的控制項 var selectedNodes = GetnodeID(AllRootNode);//獲得被checked的nodes的ID連加字串 // window.alert(selectedNodes); var arrayNodes = new Array(); arrayNodes = selectedNodes.split(","); //window.alert(gg); findAndCheckedNodes(AllRootNode,arrayNodes);//載入時判斷checkbox的是否有被checked,有的話把它設定成勾住狀態 } function tree_oncheck(TreeView1)//treeview的check的事件 ...{ var AllRootNode=new Array(); AllRootNode=document.getElementById("TreeView1").getChildren(); var node=TreeView1.getTreeNode(TreeView1.clickedNodeIndex); //獲得剛剛被check的節點 var child=""; child=node.getAttribute("id");//獲得剛剛被check的節點的ID Select(AllRootNode,child); //實現游標回焦方法 var Pchecked=TreeView1.getTreeNode(TreeView1.clickedNodeIndex).getAttribute("checked"); setcheck(node,Pchecked); //實現checked節點的下面判斷是否有子節點有的話,全部實現把子節點給勾上或全部不勾 /**//*之後的其他動作自己添寫,比如check觸發的方法、事件啊等等*/ } function Select(NodeArray,nodeid) //游標回焦方法 ...{ if(parseInt(NodeArray.length)==0) return; else ...{ for(var i=0;i< parseInt(NodeArray.length);i++) ...{ var cNode; cNode=NodeArray[i]; if (cNode.getAttribute("id")==nodeid) ...{ TreeView1.selectedNodeIndex = cNode.getNodeIndex(); break; } //如果有子節點,則繼續遞迴 if(parseInt(cNode.getChildren().length)!=0) Select(cNode.getChildren(),nodeid); } } } function setcheck(node,Pc) //設定子節點選中 ...{ var ChildNode=new Array(); ChildNode=node.getChildren(); if(parseInt(ChildNode.length)==0) return; else ...{ for(var i=0;i<ChildNode.length;i++) ...{ var cNode; cNode=ChildNode[i]; if(parseInt(cNode.getChildren().length)!=0) setcheck(cNode,Pc); cNode.setAttribute("checked",Pc); } } } function GetnodeID(NodeArray) //找到被選中節點的所有ID的字串累加 ...{ var str = ""; if(parseInt(NodeArray.length)==0) return; else ...{ var cNode; for(var i=0;i<parseInt(NodeArray.length);i++) ...{ cNode=NodeArray[i]; if (cNode.getAttribute("Checked")==true) ...{ str = str + cNode.getAttribute("id")+","; } //如果有子節點,則繼續遞迴 if(parseInt(cNode.getChildren().length)!=0) GetnodeID(cNode.getChildren()); } } return str; } function CheckboxLoad(NodeArray) //checkbox的初始化 ...{ if(parseInt(NodeArray.length)==0) return; else ...{ for(var i=0;i<parseInt(NodeArray.length);i++) ...{ var cNode; cNode=NodeArray[i]; cNode.setAttribute("checkbox","true"); //如果有子節點,則繼續遞迴 if(parseInt(cNode.getChildren().length)!=0) CheckboxLoad(cNode.getChildren()); } } } function findAndCheckedNodes(NodeArray,nodeDatas) //找到已經被checked的節點 ...{ if(parseInt(NodeArray.length)==0) ...{ return; } else ...{ for(var i=0;i<parseInt(NodeArray.length);i++) ...{ var cNode,nodeData; cNode=NodeArray[i]; /**/////如果該節點在nodeDatas裡則初始化checked = true; nodeData = cNode.getAttribute("id"); for(var j=0;j<parseInt(nodeDatas.length);j++) ...{ if(nodeDatas[j] == nodeData) ...{ cNode.setAttribute("checked","true"); break; } } //如果有子節點,則繼續遞迴 if(parseInt(cNode.getChildren().length)!=0) findAndCheckedNodes(cNode.getChildren(),nodeDatas); } } } </script>