zoukankan      html  css  js  c++  java
  • Asp.net 2.0 TreeView的checkbox Js全选与反选

           前两天在改一个TreeView的checkbox的子结点反选BUG.原来的js有问题,后面找了一个简单的解决方案,支持选定特定结点后父子结点选中与反选.测试起来也比较方法.实际上TreeView不怎么用,以前用Component UI Treeview 功能已超过MS的,后面又有基于Jquery的Tree,方便多了.代码量也少.看代码:

    ASPX:

    <asp:TreeView ID="TreeView1" runat="server" DataSourceID="XmlDataSource1" ShowCheckBoxes="All">
            </asp:TreeView>
            <asp:XmlDataSource ID="XmlDataSource1" runat="server" DataFile="~/data.xml">
            </asp:XmlDataSource>

    Cs:

    protected voidPage_Load(objectsender, EventArgse)    
    {                
        TreeView1.Attributes.Add("onclick", "OnCheckBoxCheckChanged(event)");     
    }

    然后把这段js放上:

    functionOnCheckBoxCheckChanged(evt) {
       varsrc = window.event != window.undefined ? window.event.srcElement : evt.target;
       varisChkBoxClick = (src.tagName.toLowerCase() == "input"&& src.type == "checkbox");
       if(isChkBoxClick) {
          varparentTable = GetParentByTagName("table", src);
          varnxtSibling = parentTable.nextSibling;
          if(nxtSibling && nxtSibling.nodeType == 1)//check if nxt
        
    sibling is not null& is an element node {
             if(nxtSibling.tagName.toLowerCase() == "div") //if node has children
           
    {
                //check or uncheck children at all levels
              
    CheckUncheckChildren(parentTable.nextSibling, src.checked);
                }
             }
          //check or uncheck parents at all levels
        
    CheckUncheckParents(src, src.checked);
          }
       }
    functionCheckUncheckChildren(childContainer, check) {
       varchildChkBoxes = childContainer.getElementsByTagName("input");
       varchildChkBoxCount = childChkBoxes.length;
       for(vari = 0; i < childChkBoxCount; i++) {
          childChkBoxes[i].checked = check;
          }
       }
    functionCheckUncheckParents(srcChild, check) {
       varparentDiv = GetParentByTagName("div", srcChild);
       varparentNodeTable = parentDiv.previousSibling;
       if(parentNodeTable) {
          varcheckUncheckSwitch;
          if(check) //checkbox checked
        
    {
             varisAllSiblingsChecked = AreAllSiblingsChecked(srcChild);
             if(isAllSiblingsChecked) checkUncheckSwitch = true;
             else return;
             //do not need to check parent if any(one or more) child not checked
           
    }
          else//checkbox unchecked
        
    {
             checkUncheckSwitch = false;
             }
          varinpElemsInParentTable = parentNodeTable.getElementsByTagName("input");
          if(inpElemsInParentTable.length > 0) {
             varparentNodeChkBox = inpElemsInParentTable[0];
             parentNodeChkBox.checked = checkUncheckSwitch;
             //do the same recursively
           
    CheckUncheckParents(parentNodeChkBox, checkUncheckSwitch);
             }
          }
       }
    functionAreAllSiblingsChecked(chkBox) {
       varparentDiv = GetParentByTagName("div", chkBox);
       varchildCount = parentDiv.childNodes.length;
       for(vari = 0; i < childCount; i++) {
          if(parentDiv.childNodes[i].nodeType == 1) //check if the child node is an element node
        
    {
             if(parentDiv.childNodes[i].tagName.toLowerCase() == "table") {
                varprevChkBox = parentDiv.childNodes[i].getElementsByTagName("input")[0];
                //if any of sibling nodes are not checked, return false
              
    if(!prevChkBox.checked) {
                   return false;
                   }
                }
             }
          }
       return true;
       }
    //utility function to get the container of an element by tagname
    functionGetParentByTagName(parentTagName, childElementObj) {
       varparent = childElementObj.parentNode;
       while(parent.tagName.toLowerCase() != parentTagName.toLowerCase()) {
          parent = parent.parentNode;
          }
       returnparent;
       }

    数据XML文件:

    <?xml version="1.0" encoding="utf-8" ?>
    <Syllabus>
      <Classes>
        <Class>XII Standard</Class>
        <Subjects>
          <Subject>Physics</Subject>
          <chapters>
            <chapter>Chapter 1</chapter>
            <Description>This is Chapter 1 in Physics</Description>
          </chapters>
          <chapters>
            <chapter>Chapter 2</chapter>
            <Description>This is Chapter 2 in Physics</Description>
          </chapters>
          <chapters>
            <chapter>Chapter 3</chapter>
            <Description>This is Chapter 3 in Physics</Description>
          </chapters>
          <chapters>
            <chapter>Chapter 4</chapter>
            <Description>This is Chapter 4 in Physics</Description>
          </chapters>
          <chapters>
            <chapter>Chapter 5</chapter>
            <Description>This is Chapter 5 in Physics</Description>
          </chapters>
        </Subjects>
        <Subjects>
          <Subject>Biology</Subject>
          <chapters>
            <chapter>Chapter 1</chapter>
            <Description>This is Chapter 1 in Biology</Description>
          </chapters>
          <chapters>
            <chapter>Chapter 2</chapter>
            <Description>This is Chapter 2 in Biology</Description>
          </chapters>
          <chapters>
            <chapter>Chapter 3</chapter>
            <Description>This is Chapter 3 in Biology</Description>
          </chapters>
          <chapters>
            <chapter>Chapter 4</chapter>
            <Description>This is Chapter 4 in Biology</Description>
          </chapters>
          <chapters>
            <chapter>Chapter 5</chapter>
            <Description>This is Chapter 5 in Biology</Description>
          </chapters>
        </Subjects>
        <Subjects>
          <Subject>Chemistry</Subject>
          <chapters>
            <chapter>Chapter 1</chapter>
            <Description>This is Chapter 1 in Chemistry</Description>
          </chapters>
          <chapters>
            <chapter>Chapter 2</chapter>
            <Description>This is Chapter 2 in Chemistry</Description>
          </chapters>
          <chapters>
            <chapter>Chapter 3</chapter>
            <Description>This is Chapter 3 in Chemistry</Description>
          </chapters>
          <chapters>
            <chapter>Chapter 4</chapter>
            <Description>This is Chapter 4 in Chemistry</Description>
          </chapters>
          <chapters>
            <chapter>Chapter 5</chapter>
            <Description>This is Chapter 5 in Chemistry</Description>
          </chapters>
        </Subjects>
        <Subjects>
          <Subject>Maths</Subject>
          <chapters>
            <chapter>Chapter 1</chapter>
            <Description>This is Chapter 1 in Maths</Description>
          </chapters>
          <chapters>
            <chapter>Chapter 2</chapter>
            <Description>This is Chapter 2 in Maths</Description>
          </chapters>
          <chapters>
            <chapter>Chapter 3</chapter>
            <Description>This is Chapter 3 in Maths</Description>
          </chapters>
          <chapters>
            <chapter>Chapter 4</chapter>
            <Description>This is Chapter 4 in Maths</Description>
          </chapters>
          <chapters>
            <chapter>Chapter 5</chapter>
            <Description>This is Chapter 5 in Maths</Description>
          </chapters>
        </Subjects>
      </Classes>
      <Classes>
        <Class>X Standard</Class>
        <Subjects>
          <Subject>Maths</Subject>
          <chapters>
            <chapter>Chapter 1</chapter>
            <Description>This is Chapter 1 in Maths</Description>
          </chapters>
          <chapters>
            <chapter>Chapter 2</chapter>
            <Description>This is Chapter 2 in Maths</Description>
          </chapters>
          <chapters>
            <chapter>Chapter 3</chapter>
            <Description>This is Chapter 3 in Maths</Description>
          </chapters>
          <chapters>
            <chapter>Chapter 4</chapter>
            <Description>This is Chapter 4 in Maths</Description>
          </chapters>
          <chapters>
            <chapter>Chapter 5</chapter>
            <Description>This is Chapter 5 in Maths</Description>
          </chapters>
        </Subjects>
        <Subjects>
          <Subject>Social</Subject>
          <chapters>
            <chapter>Chapter 1</chapter>
            <Description>This is Chapter 1 in Social</Description>
          </chapters>
          <chapters>
            <chapter>Chapter 2</chapter>
            <Description>This is Chapter 2 in Social</Description>
          </chapters>
          <chapters>
            <chapter>Chapter 3</chapter>
            <Description>This is Chapter 3 in Social</Description>
          </chapters>
          <chapters>
            <chapter>Chapter 4</chapter>
            <Description>This is Chapter 4 in Social</Description>
          </chapters>
          <chapters>
            <chapter>Chapter 5</chapter>
            <Description>This is Chapter 5 in Social</Description>
          </chapters>
        </Subjects>
        <Subjects>
          <Subject>Science</Subject>
          <chapters>
            <chapter>Chapter 1</chapter>
            <Description>This is Chapter 1 in Science</Description>
          </chapters>
          <chapters>
            <chapter>Chapter 2</chapter>
            <Description>This is Chapter 2 in Science</Description>
          </chapters>
          <chapters>
            <chapter>Chapter 3</chapter>
            <Description>This is Chapter 3 in Science</Description>
          </chapters>
          <chapters>
            <chapter>Chapter 4</chapter>
            <Description>This is Chapter 4 in Science</Description>
          </chapters>
          <chapters>
            <chapter>Chapter 5</chapter>
            <Description>This is Chapter 5 in Science</Description>
          </chapters>
        </Subjects>
        <Subjects>
          <Subject>English</Subject>
          <chapters>
            <chapter>Chapter 1</chapter>
            <Description>This is Chapter 1 in English</Description>
          </chapters>
          <chapters>
            <chapter>Chapter 2</chapter>
            <Description>This is Chapter 2 in English</Description>
          </chapters>
          <chapters>
            <chapter>Chapter 3</chapter>
            <Description>This is Chapter 3 in English</Description>
          </chapters>
          <chapters>
            <chapter>Chapter 4</chapter>
            <Description>This is Chapter 4 in English</Description>
          </chapters>
          <chapters>
            <chapter>Chapter 5</chapter>
            <Description>This is Chapter 5 in English</Description>
          </chapters>
        </Subjects>
      </Classes>
    </Syllabus>

    希望本文对您有帮助.

    Author:Petter Liu    http://wintersun.cnblogs.com

  • 相关阅读:
    北京燃气IC卡充值笔记
    随机分析、随机控制等科目在量化投资、计算金融方向有哪些应用?
    量化交易平台大全
    Doctor of Philosophy in Computational and Mathematical Engineering
    Institute for Computational and Mathematical Engineering
    Requirements for the Master of Science in Computational and Mathematical Engineering
    MSc in Mathematical and Computational Finance
    万字长文:详解多智能体强化学习的基础和应用
    数据处理思想和程序架构: 使用Mbedtls包中的SSL,和服务器进行网络加密通信
    31-STM32+W5500+AIR202/302基本控制篇-功能优化-W5500移植mbedtls库以SSL方式连接MQTT服务器(单向忽略认证)
  • 原文地址:https://www.cnblogs.com/wintersun/p/1541831.html
Copyright © 2011-2022 走看看