| JavaScript對TreeView的操作全解 ? <script language="C#" runat="server"> ?private void Page_Load(object sender, System.EventArgs e) ?{?? ??TreeView1.Attributes.Add("oncheck","tree_oncheck(this)"); ?} ? </script> ? <script language="javascript"> ?<!-- ?//初始化選中節點 ?function initchecknode() ?{ ??var node=TreeView1.getTreeNode("1"); ??node.setAttribute("Checked","true"); ??setcheck(node,"true"); ??FindCheckedFromNode(TreeView1); ?} ?? ?//oncheck事件 ?function tree_oncheck(tree) ?{ ??var node=TreeView1.getTreeNode(TreeView1.clickedNodeIndex); ??var Pchecked=TreeView1.getTreeNode(TreeView1.clickedNodeIndex).getAttribute("checked"); ??setcheck(node,Pchecked); ?} ? ?//設置子節點選中 ?function setcheck(node,Pc) ?{ ??var i; ??var ChildNode=new Array(); ??ChildNode=node.getChildren(); ?? ??if(parseInt(ChildNode.length)==0) ??{ ???return; ??} ??else ??{ ???for(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 GetCheck(node) ?{ ??var i; ??var ChildNode=new Array(); ??ChildNode=node.getChildren(); ??if(ChildNode) //如存在子結點 ??{ ???for(i=0;i<ChildNode.length;i++) ???{ ????cNode=ChildNode[i]; ????if(cNode.getAttribute("Checked")) ????{ ?????if(Form1.NodeState.value =="") ?????{ ??????Form1.NodeState.value = cNode.getAttribute("NodeData"); ??????Form1.NodeState_text.value= cNode.getAttribute("Text"); ?????} ?????else ?????{ ??????Form1.NodeState.value = Form1.NodeState.value +"," + cNode.getAttribute("NodeData"); ??????Form1.NodeState_text.value = Form1.NodeState_text.value + "," + cNode.getAttribute("Text"); ?????} ????? ????} ????if(cNode.getChildren()) ????{ ?????GetCheck(cNode); ????} ???} ? ??} ??else ??{ ???return; ??} ?} ?//如一個結點被選中,則其所有子結點選中 ?function SetCheck(node,Pc) ?{ ??var i; ??var ChildNode=new Array(); ??ChildNode=node.getChildren(); ??if(ChildNode) //如存在子結點 ??{ ???for(i=0;i<ChildNode.length;i++) ???{ ????cNode=ChildNode[i]; ????cNode.setAttribute("Checked",Pc); ????if(cNode.getChildren()) ????{ ?????SetCheck(cNode,Pc); ????} ???} ?? ??} ??else ??{ ???return; ??} ?} ?//如一個結點被選中,則其所有子結點選中(全選) ?function SetCheck(node,Pc) ?{ ??var i; ??var ChildNode=new Array(); ??ChildNode=node.getChildren(); ??if(ChildNode) //如存在子結點 ??{ ???for(i=0;i<ChildNode.length;i++) ???{ ????cNode=ChildNode[i]; ????cNode.setAttribute("Checked",Pc); ????if(cNode.getChildren()) ????{ ?????SetCheck(cNode,Pc); ????} ???} ?? ??} ??else ??{ ???return; ??} ?} ? ? ?//如一個結點下的所有結點均未選中,則其父結點處于未選中狀態 ?function UnCheck(node,Pc) ?{ ??if(Pc==false) ??{ ???if(node.getParent()) ???{ ????cNode=node.getParent(); ????cNode.setAttribute("Checked",false); ????SetUnCheck(cNode,Pc); ???} ??} ??else ??{ ???return; ??} ?} ? ? ?function SetUnCheck(node,Pc) ?{ ??var i; ??var theNode; ??var ChildNode=new Array(); ??ChildNode=node.getChildren(); ?? ??if(parseInt(ChildNode.length)!=0) ??{ ???for(i=0;i<ChildNode.length;i++) ???{ ????var cNode; ????cNode=ChildNode[i]; ????if(cNode.getAttribute("Checked")==true) ????{ ?????theNode=cNode.getParent(); ?????theNode.setAttribute("Checked",true); ????} ????if(parseInt(cNode.getChildren().length)!=0) ????{ ?????SetUnCheck(cNode,Pc); ????} ???} ??} ??else ??{ ???return; ??} ?} ? ? ?//如一個結點被選中,則其所有父結點均處于選中狀態 ?function SetParentCheck(node,Pchecked) ?{ ??var cNode; ??if(Pchecked==true) ??{ ???if(node.getParent()) ???{ ????cNode=node.getParent(); ????cNode.setAttribute("Checked",true); ????SetParentCheck(cNode,Pchecked); ???} ??} ??else ??{ ???return; ??} ?} ?? ? ?function Check_edit() ?{//進行修改前的驗證 ? ??var s; ??var ss; ??s=Form1.NodeState.value; ??ss=s.split(",") ??if(ss[0]=="") ??{ ???alert("在進行'修改'操作之前請進行選擇!"); ???return false; ??} ??if(ss.length>1) ??{ ???alert("在進行'修改'操作時只能選擇一項!"); ???return false; ??} ? ?} ? ? ?//進行刪除時的驗證 ?function Check_dele() ?{ ??var s; ??var ss; ??s=Form1.NodeState.value; ??ss=s.split(",") ??if(ss[0]=="") ??{ ???alert("在進行'刪除'操作之前請進行選擇!"); ???return false; ??} ? ?} ? ? ?//進行修改前的驗證 ?function Check_edit() ?{ ? ??var s; ??var ss; ??s=Form1.NodeState.value; ??ss=s.split(",") ??if(ss[0]=="") ??{ ???alert("在進行'修改'操作之前請進行選擇!"); ???return false; ??} ??if(ss.length>1) ??{ ???alert("在進行'修改'操作時只能選擇一項!"); ???return false; ??} ? ?} ? ? ?//進行刪除時的驗證 ?function Check_dele() ?{ ?? ??var s; ??var ss; ??s=Form1.NodeState.value; ??ss=s.split(",") ??if(ss[0]=="") ??{ ???alert("在進行'刪除'操作之前請進行選擇!"); ???return false; ??? ??} ??else ??{ ???if(!confirm("你真的要刪除嗎?")) ???{ ????return false; ???} ??} ?} ? ? ?//進行添加操作時的驗證 ?function Check_add() ?{ ??var s; ??var ss; ??s=Form1.NodeState.value; ??ss=s.split(",") ??if(ss[0]=="") ??{ ???alert("在進行'添加'操作之前請選擇上級模塊!"); ???return false; ??} ??if(ss.length>1) ??{ ???alert("在進行'添加'操作時只能選擇一項!"); ???return false; ??} ?} ? ?//--> ? </script> |