<script language="javascript">
/*
函數名稱:CheckNode(currentNode)、ParentNode(currentNode)、ChildNode(currentNode)
作者:常東方
建立日期:2005-02-02
函數功能:實現帶checkbox的treeview中
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))")
*/
//遞迴遍曆所有子節點
function CheckNode(currentNode)
{
var childNode=new Array();
var parentNodeChild=new Array();
var isChecked;
childNode=currentNode.getChildren();
if(currentNode.getAttribute('checked'))
{
isChecked=true;
}
else
{
isChecked=false;
}
//父節點處理
if(currentNode.getParent()!=null)
{
//選中處理
if(currentNode.getAttribute('Checked'))
{
ParentNode(currentNode);
}
else
//取消選中
{
ChildNode(currentNode);
}
}
else
{
//什麼也不做
}
//子節點處理
if(childNode.length>0)
{
for(var i=0;i<childNode.length;i++)
{
childNode.setAttribute("Checked",isChecked);
if(childNode.getChildren().length>0)
{
CheckNode(childNode);
}
}
}
}
//遞迴選中父節點
function ParentNode(currentNode)
{
if(currentNode.getParent()!=null)
{
currentNode.getParent().setAttribute('Checked',true);
//遞迴調用ParentNode(currentNode)以遍曆更上一層的父節點
ParentNode(currentNode.getParent());
}
}
//遞迴取消選中父節點
function ChildNode(currentNode)
{
if(currentNode.getParent()!=null)
{
var checkedCount=0;
var childNode=currentNode.getParent().getChildren();
for (var i=0;i<childNode.length;i++)
{
if(childNode.getAttribute('Checked'))
{
checkedCount++;
}
}
if(checkedCount==0)
{
currentNode.getParent().setAttribute('Checked',false);
}
//遞迴調用ChildNode(currentNode)以遍曆更上一層的父節點
ChildNode(currentNode.getParent());
}
}
</script>
js遞迴遍曆treeview中某節點的所有子節點的問題
var AllRootNode=new Array();
AllRootNode=TreeView1.getChildren();
AlertNode(AllRootNode);
function AlertNode(NodeArray)
{
if(parseInt(NodeArray.length)==0)
return;
else
{
for(i=0;i<NodeArray.length;i++)
{
var cNode;
cNode=NodeArray;
alert(cNode.getAttribute("Text"));
if(parseInt(cNode.getChildren().length)!=0)
AlertNode(cNode.getChildren());
}
}
}