다음과 같이 코드 코드를 복사합니다.
<스크립트 언어="자바스크립트">
/*
함수명 : CheckNode(currentNode), ParentNode(currentNode), ChildNode(currentNode)
기능: 체크박스로 트리뷰 구현
1. 상위 노드를 선택하면 해당 하위 노드도 모두 선택됩니다.
2. 모든 하위 노드의 선택을 취소하면 상위 노드의 선택도 취소됩니다.
사용 방법:
1. <head></head> 중간에 CheckNode(currentNode), ParentNode(currentNode), ChildNode(currentNode)를 추가합니다.
2. *.aspx.cs의 Page_load() 이벤트에 yourTreeView.Attribute.Add("OnCheck","CheckNode(yourTreeView.getTreeNode(yourTreeView.clickedNodeIndex))")를 추가합니다.
*/
//모든 자식 노드를 재귀적으로 순회
함수 CheckNode(현재Node)
{
var childNode=new 배열();
var parentNodeChild=new Array();
var isChecked;
childNode=currentNode.getChildren();
if(currentNode.getAttribute('checked'))
{
isChecked=true;
}
또 다른
{
isChecked=false;
}
//부모 노드 처리
if(currentNode.getParent()!=null)
{
//처리 선택
if(currentNode.getAttribute('Checked'))
{
ParentNode(현재노드);
}
또 다른
//선택 취소
{
ChildNode(현재노드);
}
}
또 다른
{
//아무것도 하지 않음
}
//자식 노드 처리
if(childNode.length>0)
{
for(var i=0;i<childNode.length;i++)
{
childNode.setAttribute("Checked",isChecked);
if(childNode.getChildren().length>0)
{
CheckNode(childNode);
}
}
}
}
//부모 노드를 재귀적으로 선택
함수 ParentNode(현재Node)
{
if(currentNode.getParent()!=null)
{
currentNode.getParent().setAttribute('Checked',true);
//재귀적으로 ParentNode(currentNode)를 호출하여 더 높은 수준의 부모 노드를 탐색합니다.
ParentNode(currentNode.getParent());
}
}
//재귀적으로 상위 노드 선택을 취소합니다.
함수 ChildNode(현재노드)
{
if(currentNode.getParent()!=null)
{
var checkCount=0;
var childNode=currentNode.getParent().getChildren();
(var i=0;i<childNode.length;i++)
{
if(childNode.getAttribute('Checked'))
{
checkCount++;
}
}
if(checkedCount==0)
{
currentNode.getParent().setAttribute('Checked',false);
}
//재귀적으로 ChildNode(currentNode)를 호출하여 더 높은 수준의 부모 노드를 탐색합니다.
ChildNode(currentNode.getParent());
}
}
</script>
js는 treeview에 있는 노드의 모든 하위 노드를 재귀적으로 탐색합니다.
다음과 같이 코드 코드를 복사합니다.
var AllRootNode=새 배열();
AllRootNode=TreeView1.getChildren();
AlertNode(AllRootNode);
functionAlertNode(NodeArray)
{
if(parseInt(NodeArray.length)==0)
반품;
또 다른
{
for(i=0;i<NodeArray.length;i++)
{
var cNode;
cNode=노드배열;
Alert(cNode.getAttribute("텍스트"));
if(parseInt(cNode.getChildren().length)!=0)
AlertNode(cNode.getChildren());
}
}
}