코드 복사 코드는 다음과 같습니다. /* <BR>함수 이름: CheckNode(currentNode), ParentNode(currentNode), ChildNode(currentNode) </P> <P>기능: 체크박스로 treeview 구현 <BR>1. 상위 노드를 선택하면 해당 하위 노드가 모두 선택됩니다. <BR>2. 모든 하위 노드 선택을 취소하면 상위 노드도 선택됩니다. 취소 </P> <P>사용법: <BR>1. <head></head> 중간에 CheckNode(currentNode), ParentNode(currentNode), ChildNode(currentNode)를 추가합니다. 2. *.aspx.cs의 Page_load() 이벤트에 yourTreeView.Attribute.Add("OnCheck","CheckNode(yourTreeView.getTreeNode(yourTreeView.clickedNodeIndex))")를 추가합니다. <p> */ <br> <br> //모든 하위 노드를 재귀적으로 순회 <br> function CheckNode(currentNode) <br> { <br> var childNode=new Array() <br> var parentNodeChild=new Array() <br> var isChecked; <br> childNode=currentNode.getChildren(); <br> if(currentNode.getAttribute('checked')) <br> { <br> isChecked=true; <br> } <br> else <br> { <br> isChecked=false; <br> } <br> //상위 노드 처리 <br> if(currentNode.getParent()!=null) <br> { <br> //선택된 처리 <br> if(currentNode.getAttribute ('선택됨')) <br> { <br> ParentNode(currentNode); <br> } <br> else <br> //선택 취소 <br> { <br> ChildNode(currentNode) <br> } <br> } <br> else <br> { <br> //아무 작업도 하지 않음 <br> } <br> //하위 노드 처리 <br> if(childNode.length>0) <br> { <br> for(var i=0;i<childNode.length;i ) <BR> { <BR> childNode.setAttribute("Checked",isChecked) <BR> if(childNode.getChildren().length>0) <br> { <br> CheckNode(childNode) <br> } <br> } <br> } <br><br> } <br> //재귀적으로 상위 노드 선택 <br> function ParentNode(currentNode) <br> { <br> if(currentNode.getParent()!=null) <br> { <br> currentNode.getParent().setAttribute('Checked',true) <br> //재귀적으로 ParentNode(currentNode)를 호출하여 업데이트를 트래버스합니다. 이전 레이어의 노드 <br> ParentNode(currentNode.getParent()); <br> } <br> } <br> //재귀적으로 상위 노드 선택 취소 <br> function ChildNode(currentNode) <br> { <br> if(currentNode.getParent()!=null) <br> { var checkCount=0; <br> var childNode=currentNode.getParent().getChildren() <br> for (var i=0; i<childNode. length;i ) <br> { <br> if(childNode.getAttribute('Checked')) <br> { <br> selectedCount ; <br> } <br> } <br> if(checkedCount= =0) <br> { <br> currentNode.getParent().setAttribute('Checked',false); <br> } <br> //재귀적으로 ChildNode(currentNode)를 호출하여 상위 수준 부모 노드를 순회합니다. <br> ChildNode (currentNode) .getParent()); 문제<br><br><br><br><br>코드 복사<br><br></p> </div> 코드는 다음과 같습니다.<br><div class="codebody" id="code83245"> <br> var AllRootNode=new Array(); <br> AllRootNode=TreeView1.getChildren(); <br> AlertNode(AllRootNode); <br><br> 함수 AlertNode(NodeArray) <br> { <br> if(parseInt(NodeArray.length)==0) <br> return; <br> else <br> { <br> for(i=0;i<nodearray.length> { <br> var cNode; <br> cNode=NodeArray; <br> Alert(cNode.getAttribute("Text")); <br> if(parseInt(cNode.getChildren().length)!=0) <br> AlertNode(cNode.getChildren()); <br> } <br> } <br> } <p></p></nodearray.length> </div>