天天看点

Ext复选框树的操作,节点清空

首先创建了一个树,有一个对树所有复选框清空的方法。

  1.  //初始化机构树
  2.  var tree;
  3. var hasSearchResult=false;
  4. function initDeptFirstNode()
  5. {
  6.     //在加载树的时候初始化自动搜索控件
  7.     initAutoComplete();
  8.     var hasloadNodeHashTable=new Hashtable();
  9.     Tree = Ext.tree;
  10.     tree = new Tree.TreePanel({
  11.         el:'div_center1_left_carimonitor1_1', 
  12.         autoScroll:true,     
  13.         height:'100%',
  14.         animate:false,
  15.         border :false
  16.         }); 
  17.     var root = new Tree.TreeNode({
  18.         checked:false,   
  19.         expanded:true,      
  20.         icon:"images/menu/jigou2.gif"
  21.     });
  22.     OrgTreeManage.getOrgTreeRoot(function(value){
  23.         //alert("从登录信息中得到的机构代号为:"+value.c_orgno);
  24.           root.setText(value.c_orgshortname);
  25.           root.id=value.c_orgno;         
  26.         }); 
  27.     tree.setRootNode(root);
  28.     tree.render();
  29.     //单击的时候给地图端送数据,加载机构信息
  30.     tree.on("click",function(node)
  31.      {      
  32.      });
  33.      //双击拓展树节点
  34.      tree.on("dblclick",function(node)
  35.     {       
  36.         node.getUI().checkbox.checked=false;    
  37.         if(!hasloadNodeHashTable.contains(node.id)){
  38.             hasloadNodeHashTable.add(node.id,node); 
  39.              OrgTreeManage.getOrgTreeLeaf(node.id,function(value){
  40.                 for(var i=0;i<value.length;i++){
  41.                     var newnode=new Ext.tree.TreeNode({
  42.                         id:value[i].c_orgno,
  43.                         expanded:true,
  44.                         checked:false,                      
  45.                         text:value[i].c_orgshortname,
  46.                         icon:"images/menu/jigou2.gif"
  47.                     });
  48.                     node.appendChild(newnode);
  49.                 }
  50.              });
  51.         }   
  52.     });
  53.     //树的勾选操作 
  54.     //这里执行两边checkchange事件来检查节点操作,移除未勾选的节点
  55.      var nodeArr=new Hashtable();
  56.          tree.on('checkchange', function(node, checked) {
  57.             //当所点击节点被选中的时候   
  58.         if(hasSearchResult==true){
  59.             clearMapView();
  60.         }           
  61.         var nodeslength=0;  
  62.         if(node.getUI().checkbox.checked){
  63.             //添加该节点的显示
  64.             nodeArr.add(node.id,node);
  65.             nodeslength=node.childNodes.length;
  66.             OrgInfoManage.getOrgDetails(node.id,function(value){
  67.                   var Institute = new Object();
  68.                   Institute["index"]=value.c_orgno;
  69.                   Institute["lon"]=value.c_jing;
  70.                   Institute["lat"]=value.c_wei;
  71.                   Institute["institutename"]=value.c_orgname;
  72.                   Institute["c_orgshortname"]=value.c_orgshortname;
  73.                   Institute["c_preorgshortname"]=value.c_preorgshortname;
  74.                   Institute["c_phone"]=value.c_phone;
  75.                   Institute["c_mail"]=value.c_mail;
  76.                   if(nodeslength==0){
  77.                     AddMarkerToInstitute(Institute,true);
  78.                   }else{
  79.                     AddMarkerToInstitute(Institute,false);
  80.                     var o =new OpenLayers.LonLat(112.987,28.1899);
  81.                     map.setCenter(o,5);
  82.                   }
  83.                 });
  84.              for(var i=0;i<nodeslength;i++){
  85.                 //将节点中所有子节点设置为true;
  86.                 node.childNodes[i].getUI().checkbox.checked=true;
  87.                 nodeArr.add(node.childNodes[i].id,node) 
  88.                 //添加所有子节点的显示
  89.                 OrgInfoManage.getOrgDetails(node.childNodes[i].id,function(value){
  90.                   var Institute = new Object();
  91.                   Institute["index"]=value.c_orgno;
  92.                   Institute["lon"]=value.c_jing;
  93.                   Institute["lat"]=value.c_wei;
  94.                   Institute["institutename"]=value.c_orgname;
  95.                   Institute["c_orgshortname"]=value.c_orgshortname;
  96.                   Institute["c_preorgshortname"]=value.c_preorgshortname;
  97.                   Institute["c_phone"]=value.c_phone;
  98.                   Institute["c_mail"]=value.c_mail;
  99.                   if(nodeslength>1){
  100.                     AddMarkerToInstitute(Institute,false);
  101.                   }
  102.                   if(nodeslength==1){
  103.                     AddMarkerToInstitute(Institute,true);
  104.                   }
  105.                 });
  106.              }
  107.         }else{
  108.             //当选中节点取消选中的时候
  109.             nodeslength=node.childNodes.length;
  110.             //这里记录子节点的数目。如果点选了分支节点,并且有多个分支节点的时候,将地图缩放到默认的状态
  111.             nodeArr.remove(node.id);
  112.             OrgInfoManage.getOrgDetails(node.id,function(value){
  113.                   var instituteid;
  114.                   instituteid=value.c_orgno;
  115.                   try{
  116.                   RemoveMarkerFromInstitute(instituteid);
  117.                   }catch(e){}
  118.                 });
  119.              for(var i=0;i<nodeslength;i++){
  120.                 //将节点中所有子节点设置为false;
  121.                 node.childNodes[i].getUI().checkbox.checked=false;  
  122.                 nodeArr.remove(node.childNodes[i].id)
  123.                 //取消子节点的显示  
  124.                 OrgInfoManage.getOrgDetails(node.childNodes[i].id,function(value){
  125.                   var instituteid;
  126.                   instituteid=value.c_orgno;
  127.                   try{
  128.                     RemoveMarkerFromInstitute(instituteid);
  129.                   }catch(e){}
  130.                 });
  131.              }
  132.         }
  133.        }, tree);  
  134.       tree.on("contextmenu",function(node,e){
  135.             var ctxMenu = new Ext.menu.Menu({
  136.                             items: [
  137.                                 {
  138.                                     id:'id_orgDetails',  
  139.                                     handler:function(){orgDetails(node);},     
  140.                                     text: "查看该机构详细信息"
  141.                                 },
  142.                                 {
  143.                                     id:'id_orgIncome',  
  144.                                     handler:function(){orgIncome(node);},     
  145.                                     text: "查看该机构营收情况"
  146.                                 }
  147.                              ]
  148.                  });
  149.             ctxMenu.showAt(e.getXY());      
  150.      });
  151.     function orgDetails(node){
  152.         openWindow("manage/marketing/orgInfoManage/details.html?id="+node.id+"",'机构详情',450,170); 
  153.     }
  154.     function orgIncome(node){
  155.         openWindow("manage/marketing/orgBranchIncomeManage/main.html?id="+node.id+"",'机构收入',600,480); 
  156.     }           
  157. }
  158. //清空所有复选框
  159. function clearChildNodeChecked(node){
  160.     if(node.childNodes.length!=0){
  161.         for(var i=0;i<node.childNodes.length;i++){
  162.                 node.childNodes[i].getUI().checkbox.checked=false;
  163.                 clearChildNodeChecked(node.childNodes[i]);
  164.             }
  165.     }
  166. }