javascript 操作treeview的checkbox加载、全选、全不选、以及光标回焦问题

 
//在页面加载中:onLoad="Loadtreeview()";
//服务器端加载时注册treeview的check的事件: TreeView1.Attributes.Add("oncheck","tree_oncheck(TreeView1)");


<script language="javascript">
   function Loadtreeview() //加载树形
   ...{
    var AllRootNode=new Array();
    AllRootNode=document.getElementById("TreeView1").getChildren();//获得treview的最外层节点数组
    CheckboxLoad(AllRootNode);  //加载checkbox的控件
    var selectedNodes = GetnodeID(AllRootNode);//获得被checked的nodes的ID连加字符串
    // window.alert(selectedNodes);
    var arrayNodes = new Array();
    arrayNodes = selectedNodes.split(",");
    //window.alert(gg);
    findAndCheckedNodes(AllRootNode,arrayNodes);//加载时判断checkbox的是否有被checked,有的话把它

设置成勾住状态
   }

   function tree_oncheck(TreeView1)//treeview的check的事件
   ...{        
    var AllRootNode=new Array();
    AllRootNode=document.getElementById("TreeView1").getChildren();  
    var node=TreeView1.getTreeNode(TreeView1.clickedNodeIndex); //获得刚刚被check的节点
    var child="";
    child=node.getAttribute("id");//获得刚刚被check的节点的ID
    Select(AllRootNode,child);  //实现光标回焦方法
    var Pchecked=TreeView1.getTreeNode(TreeView1.clickedNodeIndex).getAttribute("checked");
    setcheck(node,Pchecked); //实现checked节点的下面判断是否有子节点有的话,全部实现把子节点给勾

上或全部不勾
          /**//*之后的其他操作自己添写,比如check触发的方法、事件啊等等*/             
   }
     
   function Select(NodeArray,nodeid)   //光标回焦方法
   ...{

     if(parseInt(NodeArray.length)==0)
               return;
     else
     ...{
      for(var i=0;i< parseInt(NodeArray.length);i++)
      ...{
                   
       var cNode;
       cNode=NodeArray[i];
        if (cNode.getAttribute("id")==nodeid)
        ...{
        TreeView1.selectedNodeIndex = cNode.getNodeIndex();
        break;
        }

       //如果有子节点,则继续递归
       if(parseInt(cNode.getChildren().length)!=0)
       Select(cNode.getChildren(),nodeid);   
      }
                   
     }

   }

  
            function setcheck(node,Pc) //设置子节点选中
            ...{
                
                var ChildNode=new Array();
                ChildNode=node.getChildren();
                 
                if(parseInt(ChildNode.length)==0)
                    return;
                else
                ...{
                    for(var i=0;i<ChildNode.length;i++)
                    ...{
                        var cNode;
                        cNode=ChildNode[i];
                        if(parseInt(cNode.getChildren().length)!=0)
                            setcheck(cNode,Pc);
                        cNode.setAttribute("checked",Pc);
                    }
                }
            }
   
   function GetnodeID(NodeArray) //找到被选中节点的所有ID的字符串累加
   ...{

            var str = "";
           if(parseInt(NodeArray.length)==0)
                 return;
   else
   ...{
    var cNode;
    for(var i=0;i<parseInt(NodeArray.length);i++)
    ...{
     cNode=NodeArray[i];
     if (cNode.getAttribute("Checked")==true)
     ...{ 
      str = str + cNode.getAttribute("id")+",";
     }
     //如果有子节点,则继续递归
     if(parseInt(cNode.getChildren().length)!=0)
     GetnodeID(cNode.getChildren()); 
    }
                 
   }

        return  str;
    }
 function CheckboxLoad(NodeArray)  //checkbox的初始化
 ...{
       if(parseInt(NodeArray.length)==0)
             return;
        else
        ...{
            for(var i=0;i<parseInt(NodeArray.length);i++)
            ...{
                    
                var cNode;
                cNode=NodeArray[i];
                
                cNode.setAttribute("checkbox","true");
        
                //如果有子节点,则继续递归
                if(parseInt(cNode.getChildren().length)!=0)
                CheckboxLoad(cNode.getChildren()); 
            }
                
        }
 }
 
   function findAndCheckedNodes(NodeArray,nodeDatas)  //找到已经被checked的节点
     ...{
      if(parseInt(NodeArray.length)==0)
      ...{
       return;
      }
      else
      ...{
       for(var i=0;i<parseInt(NodeArray.length);i++)
       ...{
        var cNode,nodeData;
        cNode=NodeArray[i];
        /**/如果该节点在nodeDatas里则初始化checked = true;
        nodeData = cNode.getAttribute("id");
        for(var j=0;j<parseInt(nodeDatas.length);j++)
        ...{
         if(nodeDatas[j] == nodeData)
         ...{
          cNode.setAttribute("checked","true");
          break;
         }
        }
        //如果有子节点,则继续递归
        if(parseInt(cNode.getChildren().length)!=0)
        findAndCheckedNodes(cNode.getChildren(),nodeDatas);    
       }
      }
     }
    
</script>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值