zoukankan      html  css  js  c++  java
  • 客户端代码实现无刷新TreeView的复选框多选

    1. 服务端加载数据.

    2.设置每个节点 . NavigateUrl = "javascript:void(0)"或者设置 . NavigateUrl = "#", 但是后者在刷新页面后可能导致TreeView所在页面位置上靠; 目的是防止默认情况下点击节点导致刷新整个页面的麻烦.

    3.注册节点的点击事件chkTreeView.Attributes.Add("onclick", "javascript:return CheckNode();");

    4.客户端编写点击复选框的操作代码

    function CheckNode()

        
    if(event.srcElement.tagName.toLowerCase() == "input")//判断是否为checkbox
        {
            
    //如果为选中状态, 则设置所有子节点. 如果为取消状态, 则设置所有子节点,并取消父节点的选中状态.
            var flagChecked = event.srcElement.checked;//当前节点的选择标志
            //当前节点的TABLE     
            var currNodeTable = event.srcElement.parentElement.parentElement.parentElement.parentElement;
            
            
    //设置所有子节点
            SelAllChildren(currNodeTable, flagChecked);
            
            
    var parentNodeTable = currNodeTable.parentElement.previousSibling;//父节点
            if(!flagChecked)
            
    {
                SelAllParent(parentNodeTable, flagChecked);
            }

            
    else
            
    {
                SelFullChildrenChecked(parentNodeTable);
            }

            
            
    //获取所有选择节点
            GetAllCheckedNodes(currNodeTable);
        }

    }



    //查找CheckBox
    function FindCheckBox(rowList)
    {
        
    if(rowList == null)
            
    return null;
            
        
    var cellList = rowList.cells;
        
    if(cellList  == null)
            
    return null;
        
    for(var k = 0; k < cellList.length; k++)
        
    {
            
    var childList = cellList[k].children;
            
    if(childList == null)
                
    continue;
            
    for(var m = 0; m < childList.length; m++)
            
    {
                
    if(childList[m].tagName.toLowerCase() == "input")
                
    {
                    
    return childList[m];
                }

            }

        }

    }


    //如果没有CheckBox则查找其他节点
    function FindNode(rowList)
    {
        
    if(rowList == null)
            
    return null;
            
        
    var cellList = rowList.cells;
        
    if(cellList == null)
            
    return null;
        
    for(var k = 0; k < cellList.length; k++)
        
    {
            
    var childList = cellList[k].children;
            
    if(childList == null)
                
    continue;
            
    for(var m = 0; m < childList.length; m++)
            
    {
                
    if(childList[m].tagName.toLowerCase() == "a")
                
    {
                    
    return childList[m];
                }

            }

        }

    }


    //所有子 节点是否都是选中状态
    function IsFullChildrenChecked(parentNodeTable)
    {
        
    if(parentNodeTable == null || parentNodeTable.nextSibling == null || parentNodeTable.nextSibling.children == null)
            
    return true;
            
        
    var childNodeList = parentNodeTable.nextSibling.children;
        
    for(var i = 0; i < childNodeList.length; i++)
        
    {
            
    if(childNodeList[i].tagName.toLowerCase() != "table")//是否有子节点
                continue;
                
            
    var rowList = childNodeList[i].rows;
            
    if(rowList == null)
                
    continue;
            
    for(var j = 0; j < rowList.length; j++)
            
    {
                
    var lastNode = FindCheckBox(rowList[j]);
                
    if(lastNode != null)
                
    {
                    
    if(lastNode.checked == false)
                        
    return false;
                }

                
    else
                
    {
                    lastNode 
    = FindNode(rowList[j]);
                }

                
                
    if(lastNode == null)
                    
    continue;
                    
               
    var childNodeTable = lastNode.parentElement.parentElement.parentElement.parentElement;
               
    if(childNodeTable.nextSibling == null || childNodeTable.nextSibling.children == null)
                   
    continue;
                   
               
    if(childNodeTable.nextSibling.children.length != 0)
               
    {
                   
    if(IsFullChildrenChecked(childNodeTable) == false)
                        
    return false;
               }

            }

        }

        
        
    return true;
    }


    //把子节点都为选中状态的父节点也设置为选中状态
    function SelFullChildrenChecked(parentNodeTable)
    {
        
    if(parentNodeTable == null)
            
    return ;
            
        
    if(IsFullChildrenChecked(parentNodeTable))
        
    {
           
    var lastNode = FindCheckBox(parentNodeTable);
            
    if(lastNode != null)
            
    {
                lastNode.checked 
    = true;
            }

            
    else
            
    {
                lastNode 
    = FindNode(parentNodeTable);
            }

            
            
    if(lastNode == null)
                
    return ;
                
            parentNodeTable 
    = lastNode.parentElement.parentElement.parentElement.parentElement;
            parentNodeTable 
    = parentNodeTable.parentElement.previousSibling;//父节点
     
            SelFullChildrenChecked(parentNodeTable);
        }

    }


    //设置所有子节点
    function SelAllChildren(currNodeTable, flagChecked)
    {
        
    if(currNodeTable == null || currNodeTable.nextSibling == null || currNodeTable.nextSibling.children == null)
            
    return;
            
        
    var childNodeList = currNodeTable.nextSibling.children;
        
    for(var i = 0; i < childNodeList.length; i++)
        
    {
            
    if(childNodeList[i].tagName.toLowerCase() != "table")//是否有子节点
                continue;
                
            
    var rowList = childNodeList[i].rows;
            
    if(rowList == null)
                
    continue;
            
    for(var j = 0; j < rowList.length; j++)
            
    {
                
    var lastNode = FindCheckBox(rowList[j]);
                
    if(lastNode != null)
                
    {
                    lastNode.checked 
    = flagChecked;
                }

                
    else
                
    {
                    lastNode 
    = FindNode(rowList[j]);
                }

                
                
    if(lastNode == null)
                    
    continue;
                    
               
    var childNodeTable = lastNode.parentElement.parentElement.parentElement.parentElement;
               
    if(childNodeTable.nextSibling == null || childNodeTable.nextSibling.children == null)
                   
    continue;
                   
               
    if(childNodeTable.nextSibling.children.length != 0)
               
    {
                   SelAllChildren(childNodeTable, flagChecked);
               }

             }

        }

    }
      
      
    //设置所有父节点
    function SelAllParent(parentNodeTable, flagChecked)
    {
        
    if(parentNodeTable == null)
            
    return;
            
        
    var lastNode = FindCheckBox(parentNodeTable);
        
    if(lastNode != null)
        
    {
            lastNode.checked 
    = flagChecked;
        }

        
    else
        
    {
            lastNode 
    = FindNode(parentNodeTable);
        }

           
        
    if(lastNode == null)
            
    return ;
               
        parentNodeTable 
    = lastNode.parentElement.parentElement.parentElement.parentElement;
        parentNodeTable 
    = parentNodeTable.parentElement.previousSibling;//父节点
     
        SelAllParent(parentNodeTable, flagChecked);

    }


    //在XML文档中查找节点

    function FindXMLNode(parentNode, nodeID)
    {
        
    if(parentNode == null || parentNode.attributes == null || nodeID == null)
            
    return null;
            
        
    if(parentNode.attributes.getNamedItem("NodeValue"!= null)
        
    {        
            
    if(parentNode.attributes.getNamedItem("NodeValue").nodeValue == nodeID)
                
    return parentNode;
         }

            
        
    var childNodeList = parentNode.childNodes;
        
    for(var i = 0; i < childNodeList.length; i++)
        
    {
            
    var childNode = childNodeList[i];
            
    var returnNode = FindXMLNode(childNode, nodeID);
            
    if(returnNode != null)
                
    return returnNode;
        }

        
        
    return null;
    }


    function SetXMLNodeChecked(nodeID, checkedFlag)
    {
        
    var childNodeList = xmlDoc.childNodes;
        
        
    for(var i = 0; i < childNodeList.length; i++)
        
    {
            
    var childNode = childNodeList[i];
            
            
    var returnNode = FindXMLNode(childNode, nodeID);
            
    if(returnNode != null)
                returnNode.attributes.getNamedItem(
    "IsChecked").nodeValue = checkedFlag;
        }


    }


    function CreateXMLDoc()
    {
        
    var xmlDoc;
        
    if(ActiveXObject != null)
        
    {
            xmlDoc 
    = new ActiveXObject("MSXML2.DOMDocument.3.0");
        }

        
    else if(document.implementation && document.implementation.createDocument)
        
    {
            xmlDoc
    =document.implementation.createDocument("","doc",null);
        }

        
    else
        
    {
            
    return null;
        }

        
        xmlDoc.async 
    = false;
        xmlDoc.preserveWhiteSpace
    =true;
        
        
    return xmlDoc
    }


     
    function createXMLHttp()
     
    {
        
    var xmlHttp;
        
    if (ActiveXObject != null)
        
    {
            xmlHttp
    =new ActiveXObject("Microsoft.XMLHTTP");
        }

        
    else
        
    {
            xmlHttp
    =new XMLHttpRequest();
        }

        
    return xmlHttp;
     }

     
    function GetAllCheckedNodes(currNodeTable)
    {
        HighNodesNameStr 
    = "";
        AllNodesNameStr 
    = "";
        
       RootNode 
    = GetRootNode(currNodeTable, currNodeTable);
       
       
    //获取最上一级的选中节点
       GetHighChildCheckedNode(RootNode);
       
       
    //获取所有的选中节点
       GetAllChildCheckedNodes(RootNode);
       
       window.parent.document.all(
    "SelHighNodesNameHFld").value = HighNodesNameStr;
       window.parent.document.all(
    "SelAllNodesNameHFld").value = AllNodesNameStr;
       window.parent.document.all(
    "SplitSymbolHFld").value = SplitSymbolStr;
      
       document.all(
    "SelHighNodesNameHFld").value = HighNodesNameStr;
       document.all(
    "SelAllNodesNameHFld").value = AllNodesNameStr;
       document.all(
    "SplitSymbolHFld").value = SplitSymbolStr;
     
       
    }


     
    //获取最上一级的指标节点ID, 如果有父节点, 则只记录父节点的ID
    function GetHighChildCheckedNode(currNodeTable)
    {
        
    if(currNodeTable == null || currNodeTable.nextSibling == null || currNodeTable.nextSibling.children == null)
            
    return;
            
        
    var childNodeList = currNodeTable.nextSibling.children;
        
    for(var i = 0; i < childNodeList.length; i++)
        
    {
            
    if(childNodeList[i].tagName.toLowerCase() != "table")//是否有子节点
                continue;
                
            
    var rowList = childNodeList[i].rows;
            
    if(rowList == null)
                
    continue;
            
    for(var j = 0; j < rowList.length; j++)
            
    {
                
    var lastNode = FindCheckBox(rowList[j]);
                
    if(lastNode != null)
                
    {
                    
    if(lastNode.checked == 1)
                    
    {
                        HighNodesNameStr 
    += childNodeList[i].innerText + SplitSymbolStr;
                        
    break;
                     }

                }

                
    else
                
    {
                    lastNode 
    = FindNode(rowList[j]);
                }

                
                
    if(lastNode == null)
                    
    continue;
                    
               
    var childNodeTable = lastNode.parentElement.parentElement.parentElement.parentElement;
               
    if(childNodeTable.nextSibling == null || childNodeTable.nextSibling.children == null)
                   
    continue;
                   
               
    if(childNodeTable.nextSibling.children.length != 0)
               
    {
                   GetHighChildCheckedNode(childNodeTable);
               }

             }

        }

    }


    //获取最上一级的指标节点ID, 如果有父节点, 则只记录父节点的ID
    function GetAllChildCheckedNodes(currNodeTable)
    {
        
    if(currNodeTable == null || currNodeTable.nextSibling == null || currNodeTable.nextSibling.children == null)
            
    return;
            
        
    var childNodeList = currNodeTable.nextSibling.children;
        
    for(var i = 0; i < childNodeList.length; i++)
        
    {
            
    if(childNodeList[i].tagName.toLowerCase() != "table")//是否有子节点
                continue;
                
            
    var rowList = childNodeList[i].rows;
            
    if(rowList == null)
                
    continue;
            
    for(var j = 0; j < rowList.length; j++)
            
    {
                
    var lastNode = FindCheckBox(rowList[j]);
                
    if(lastNode != null)
                
    {
                    
    if(lastNode.checked == 1)
                    
    {
                        AllNodesNameStr 
    += childNodeList[i].innerText + SplitSymbolStr;
                     }

                }

                
    else
                
    {
                    lastNode 
    = FindNode(rowList[j]);
                }

                
                
    if(lastNode == null)
                    
    continue;
                    
               
    var childNodeTable = lastNode.parentElement.parentElement.parentElement.parentElement;
               
    if(childNodeTable.nextSibling == null || childNodeTable.nextSibling.children == null)
                   
    continue;
                   
               
    if(childNodeTable.nextSibling.children.length != 0)
               
    {
                   GetAllChildCheckedNodes(childNodeTable);
               }

             }

        }

    }


    function GetRootNode(currNodeTable, preNodeTable)
    {
        
    if(RootNode != null)
            
    return RootNode;
          
         
    if(currNodeTable == null)
            
    return null;
            
        
    var lastNode = FindCheckBox(currNodeTable);
        
    if(lastNode == null)
        
    {
            lastNode 
    = FindNode(currNodeTable);
        }

           
        
    if(lastNode == null)
        
    {
            RootNode 
    = preNodeTable;
            
    return RootNode;
        }

               
        parentNodeTable 
    = lastNode.parentElement.parentElement.parentElement.parentElement;
        parentNodeTable 
    = parentNodeTable.parentElement.previousSibling;//父节点
     
        RootNode 
    = GetRootNode(parentNodeTable, currNodeTable);
        
    if(RootNode != null)
            
    return RootNode;
                 
         
    }

  • 相关阅读:
    go 注释/说明/文档 标注
    go stack object escape
    ubuntu virtualBox windows10 CPU占用100%
    git 团队合作
    git 修改远程pull和push地址
    go 项目编译失败
    fork函数 linux创建子进程
    51nod1183 编辑距离
    各种平衡树
    redis 配置多个ip 解决方案
  • 原文地址:https://www.cnblogs.com/lds85930/p/1294825.html
Copyright © 2011-2022 走看看