zoukankan      html  css  js  c++  java
  • TreeView ShowCheckBox [文摘]

    1. 选中所有子节点:
    function OnTreeNodeChecked() 
            
    {
                var ele 
    = window.event.srcElement; 
                
    if(ele.type=='checkbox'
                

                    var childrenDivID 
    = ele.id.replace('CheckBox','Nodes'); 
                    var div 
    = document.getElementById(childrenDivID); 
                    
    if(div==null)return
                    var checkBoxs 
    = div.getElementsByTagName('INPUT'); 
                    
    for(var i=0;i<checkBoxs.length;i++
                    

                        
    if(checkBoxs[i].type=='checkbox'
                            checkBoxs[i].
    checked=ele.checked
                    }
     
                }
     
            }
     
     
     2. 如果要选中子节点又同时选中所有父节点:
      
    function getParentByTagName(element,tagName)
            
    {
                var    parent 
    = element.parentNode;
                var    upperTagName 
    = tagName.toUpperCase();
                
    while (parent && (parent.tagName.toUpperCase() != upperTagName))
                
    {
                    parent 
    = parent.parentNode ? parent.parentNode : parent.parentElement;
                }

                
    return parent;
            }


            function setParentChecked(objNode)
            
    {
                var    objParentDiv 
    = getParentByTagName(objNode,"div");
                
    if(objParentDiv == null || objParentDiv == "undefined")
                    
    return;
                var    objID 
    =    objParentDiv.getAttribute("ID");
                var    objParentCheckBox 
    =    document.getElementById(objID.replace("Nodes","CheckBox"));
                
    if(objParentCheckBox == null || objParentCheckBox    == "undefined")
                    
    return;
                
    if(objParentCheckBox.tagName!="INPUT" && objParentCheckBox.type    == "checkbox")
                    
    return;
                objParentCheckBox.
    checked =    true;
                setParentChecked(objParentCheckBox);
            }



            function setChildCheckedState(div,state)
            
    {
                var    objchild 
    = div.childNodes;
                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    = state;
                    }

                    setChildCheckedState(tempObj,state);
                }

            }

            function TreeNodeChecked()
            
    {
                var    objNode    
    = window.event.srcElement;
                
    if(objNode.tagName!="INPUT"    || objNode.type!="checkbox")
                    
    return;
                
                
    if(objNode.checked == true)
                
    {
                    setParentChecked(objNode);
                }

                var    objID 
    =    objNode.getAttribute("ID");
                var    objParentDiv 
    = document.getElementById(objID.replace("CheckBox","Nodes"));
                
    if(objParentDiv==null || typeof(objParentDiv) == "undefined")
                    
    return;
                setChildCheckedState(objParentDiv,objNode.
    checked);

            }

      后台的给treeview添加onclick事件处理:
     
    m_Tree.Attributes.Add("onclick""TreeNodeChecked();");


    3.每次只选中一个节点,相对与互斥,这个很好实现
    function TreeNodeChecked()
    {
      var objNode 
    = window.event.srcElement;
      
    if(objNode.tagName!="INPUT" || objNode.type !="checkbox")
      
    return;
      
    if(window.lastCheckNode != null)
      window.lastCheckNode.
    checked = false;
      window.lastCheckNode 
    = objNode;
    }

  • 相关阅读:
    开源项目SMSS发开指南(四)——SSL/TLS加密通信详解(上)
    开源项目SMSS发开指南(三)——protobuf协议设计
    开源项目SMSS开发指南(二)——基于libevent的线程池
    开源项目SMSS开发指南
    萧瑟斩落叶,孤月伴影长
    TCP/IP和Socket开发经验分享
    Linux C++轻量级开发指南
    如何使用threejs实现第一人称视角的移动
    图形辅助,理解递归
    字节的游戏
  • 原文地址:https://www.cnblogs.com/angelfeather/p/763954.html
Copyright © 2011-2022 走看看