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

  • 相关阅读:
    WF4.0 Beta1 自定义跟踪
    WF4.0 Beta1 流程设计器与Activity Designer
    新版本工作流平台的 (二) 权限算法(组织结构部分)
    WF4.0 Beta1 WorkflowInvoker
    WF4.0 基础篇 (十) Collection 集合操作
    WF4.0 基础篇 (十五) TransactionScope 事物容器
    WF4.0 基础篇 (六) 数据的传递 Arguments 参数
    WF4B1 的Procedural Activity 之InvokeMethod , InvokeMethod<T> 使用
    WF4.0 Beta1 异常处理
    WF4.0 Beta1 变量 Variables
  • 原文地址:https://www.cnblogs.com/wintersun/p/1541831.html
Copyright © 2011-2022 走看看