TreeView如何实现全选

下面有两种办法,是我从CSDN里找到的,拿来共享下
法一:
用JS我实现了的,没什么问题。记得在Page_load时间写
this.TreeView1.Attributes.Add("onclick",    "CheckEvent()");


JScript code
     //获取元素指定tagName的父元素
function public_GetParentByTagName(element, tagName)
{
          var parent = element.parentNode;
          var upperTagName = tagName.toUpperCase();
          //如果这个元素还不是想要的tag就继续上溯
          while (parent && (parent.tagName.toUpperCase() != upperTagName))
          {
              parent = parent.parentNode ? parent.parentNode : parent.parentElement;
          }
          return parent;
}

//设置节点的父节点Cheched——该节点可访问,则他的父节点也必能访问
function setParentChecked(objNode)
{
          var objParentDiv = public_GetParentByTagName(objNode,"div");
          if(objParentDiv==null ¦ ¦ objParentDiv == "undefined")
          {
              return;
          }
          var objID = objParentDiv.getAttribute("ID");
          objID = objID.substring(0,objID.indexOf("Nodes"));
          objID = objID+"CheckBox";
          var objParentCheckBox = document.getElementById(objID);
          if(objParentCheckBox==null ¦ ¦ objParentCheckBox == "undefined")
          {
              return;
          }
          if(objParentCheckBox.tagName!="INPUT" && objParentCheckBox.type == "checkbox")
          return;
          objParentCheckBox.checked = true;
          setParentChecked(objParentCheckBox);
}

//设置节点的子节点uncheched——该节点不可访问,则他的子节点也不能访问
function setChildUnChecked(divID)
{
          var objchild = divID.children;
          var count = objchild.length;
          for(var i=0;i <objchild.length;i++)
          {
              var tempObj = objchild[i];
              if(tempObj.tagName=="INPUT" && tempObj.type == "checkbox")
              {
                  tempObj.checked = false;
              }
              setChildUnChecked(tempObj);
          }
}

//设置节点的子节点cheched——该节点可以访问,则他的子节点也都能访问
function setChildChecked(divID)
{
          var objchild = divID.children;
          var count = objchild.length;
          for(var i=0;i <objchild.length;i++)
          {
              var tempObj = objchild[i];
              if(tempObj.tagName=="INPUT" && tempObj.type == "checkbox")
              {
                  tempObj.checked = true;
              }
              setChildChecked(tempObj);
          }
}

//触发事件
function CheckEvent()
{

          var objNode = event.srcElement;

          if(objNode.tagName!="INPUT" ¦ ¦ objNode.type!="checkbox")
          return;

          if(objNode.checked==true)
          {
              setParentChecked(objNode);
              var objID = objNode.getAttribute("ID");
              var objID = objID.substring(0,objID.indexOf("CheckBox"));
              var objParentDiv = document.getElementById(objID+"Nodes");
              if(objParentDiv==null ¦ ¦ objParentDiv == "undefined")
              {
                  return;
              }
              setChildChecked(objParentDiv);
          }
          else
          {
              var objID = objNode.getAttribute("ID");
              var objID = objID.substring(0,objID.indexOf("CheckBox"));
              var objParentDiv = document.getElementById(objID+"Nodes");
              if(objParentDiv==null ¦ ¦ objParentDiv == "undefined")
              {
                  return;
              }
              setChildUnChecked(objParentDiv);
          }
}

法二:

  
  
// 全选TreeView function client_OnTreeNodeChecked() { var obj = window.event.srcElement; var treeNodeFound = false ; var checkedState; if (obj.tagName == " INPUT " && obj.type == " checkbox " ) { var treeNode = obj; checkedState = treeNode.checked; do { obj = obj.parentElement; } while (obj.tagName != " TABLE " ) var parentTreeLevel = obj.rows[ 0 ].cells.length; var parentTreeNode = obj.rows[ 0 ].cells[ 0 ]; var tables = obj.parentElement.getElementsByTagName( " TABLE " ); var numTables = tables.length if (numTables >= 1 ) { for (i = 0 ; i < numTables; i ++ ) { if (tables[i] == obj) { treeNodeFound = true ; i ++ ; if (i == numTables) { return ; } } if (treeNodeFound == true ) { var childTreeLevel = tables[i].rows[ 0 ].cells.length; if (childTreeLevel > parentTreeLevel) { var cell = tables[i].rows[ 0 ].cells[childTreeLevel - 1 ]; var inputs = cell.getElementsByTagName( " INPUT " ); inputs[ 0 ].checked = checkedState; } else { return ; } } } } } }




<asp:TreeView ID="TreeView1" runat="server" ShowCheckBoxes="All" ShowLines="True"   οnclick='client_OnTreeNodeChecked()' >
</asp:TreeView>
两种方法我都试了,完全可以做到!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值