本篇文章主要是对 JS 控件 ASP.NET 的 treeview 控件全选或者取消的示例代码进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助
Javascript 是一种由 Netscape 的 LiveScript 发展而来的原型化继承的基于对象的动态类型的区分大小写的客户端脚本语言,主要目的是为了解决服务器端语言,比如 Perl,遗留的速度问题,为客户提供更流畅的浏览效果。
- <script language="javascript">
- /*
- 函数名称:CheckNode(currentNode)、ParentNode(currentNode)、ChildNode(currentNode) */
函数功能: 实现带 checkbox 的 treeview 中
1、选中父结点其子结点也全部选中
2、取消全部子结点的选择后,父结点的选择也随之取消
使用方法:
1、在中间添加 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.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
{
if(childNode.getAttribute('Checked'))
{
checkedCount++;
}
}
if(checkedCount==0)
{
currentNode.getParent().setAttribute('Checked',false);
}
// 递归调用 ChildNode(currentNode) 以遍历更上一层的父节点
ChildNode(currentNode.getParent());
}
}
来源: