JS控件ASP.NET的treeview控件全选或者取消(示例代码)

  

复制代码 代码如下:

  <script language="javascript">

  /*

  函数名称:CheckNode(currentNode)、ParentNode(currentNode)、ChildNode(currentNode)  

  函数功能:实现带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());

  }

  }

  }