您的位置:首页 > 编程语言 > ASP

JS控件ASP.NET的treeview控件全选或者取消

2011-08-28 17:12 417 查看
<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());

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: