關于lazyTreeGrid增加checkbox

             沒有太好的辦法,只能用formatter屬性來做。下面是我寫的一個完整的實現方法
             1  function( value,rowIndex,cells)
           2 {    var rowdata = this.grid.getItem(rowIndex);
           3     var rowvalue = rowdata.checked.toString();
           4     var first = "<div id='"+rowdata.id+"' style='height:15px;width:15px;float:left'";
           5     var last =  "onclick='OnChangeCheck("+rowIndex+","+this.grid.id+")'>  </div>"+value;
           6     if(rowvalue=='true'){
           7         return first+" class='sd-icon-checked' onmouseover ='oncheckover(this)' onmouseout='oncheckout(this)'"+last;
           8     }else if(rowvalue=='mix'){
           9         return first+" class='sd-icon-checkmix' onmouseover ='oncheckmixover(this)' onmouseout='oncheckmixout(this)'"+last;
          10     }
          11         return first+"class='sd-icon-nochecked' onmouseover ='onnocheckover(this)' onmouseout='onnocheckout(this)'"+last;
          12         
          13     
          14 };
          15 function oncheckmixout(e) {
          16     e.className = "sd-icon-checkmix";
          17  }
          18 function oncheckmixover(e) {
          19     e.className = "sd-icon-overcheckmix";
          20  }
          21 function onnocheckout(e) {
          22     e.className = "sd-icon-nochecked";
          23  }
          24 function oncheckout(e) {
          25     e.className = "sd-icon-checked";
          26  }
          27 function onnocheckover(e) {
          28         e.className = "sd-icon-overnochecked";
          29      }
          30 function oncheckover(e) {
          31     e.className = "sd-icon-overchecked";
          32  }
          33 function OnChangeCheck(rowIndexs,id)
          34 {
          35     var store=dijit.byId(id).store;
          36     var rowdata = dijit.byId(id.toString()).getItem(rowIndexs);
          37 
          38     
          39     if(rowdata.checked=='true'){
          40         store.setValue(rowdata,"checked",'false');
          41         if(rowdata.children!=null){
          42             findChildrenItem(rowdata,'false',id);
          43         }
          44     }
          45     else{
          46         store.setValue(rowdata,"checked",'true');
          47         if(rowdata.children!=null){
          48             findChildrenItem(rowdata,'true',id);
          49         }
          50     }
          51     var parentItem= getTreeParentItem(id,rowdata);
          52     if(parentItem!=null){
          53         findParentItem(parentItem,id);
          54     }
          55     
          56 }
          57 
          58 function findChildrenItem(thisItem,value,id){
          59     var store=dijit.byId(id).store;
          60      for(var k=0;k<thisItem.children.length;k++){
          61          
          62          var theChildren = thisItem.children[k];
          63          store.setValue(theChildren,"checked",value);
          64          if(theChildren.children!=null){
          65              findChildrenItem(theChildren,value,id);
          66          }
          67               
          68     }
          69     
          70 }
          71 function findParentItem(parentItem,id){
          72     var store=dijit.byId(id).store;
          73     var parentChecked = 0;
          74     if(parentItem!=null){
          75          var children = parentItem.children;
          76          for(var i=0;i<children.length;i++)
          77          {    
          78              if(children[i].checked.toString()!='true'){
          79                  if(children[i].checked.toString()=='mix'){parentChecked +=0.5;}
          80                  else{parentChecked +=1;};
          81              }
          82          }
          83          if(!parentChecked)
          84          {
          85              store.setValue(parentItem,"checked",'true');
          86          }else{
          87              if(parentChecked!=parentItem.children.length||parentChecked!=parseInt(parentChecked)){ 
          88                  store.setValue(parentItem,"checked",'mix');
          89                  }
          90              else{
          91                  store.setValue(parentItem,"checked",'false');
          92                  };
          93          }
          94     }
          95     var superParent=            PM.addCheckbox = function( value,rowIndex,cells)
          { var rowdata = this.grid.getItem(rowIndex);
          var rowvalue = rowdata.checked.toString();
          var first = "<div id='"+rowdata.id+"' style='height:15px;width:15px;float:left'";
          var last =  "onclick='OnChangeCheck("+rowIndex+","+this.grid.id+")'>  </div>"+value;
          if(rowvalue=='true'){
          return first+" class='sd-icon-checked' onmouseover ='oncheckover(this)' onmouseout='oncheckout(this)'"+last;
          }else if(rowvalue=='mix'){
          return first+" class='sd-icon-checkmix' onmouseover ='oncheckmixover(this)' onmouseout='oncheckmixout(this)'"+last;
          }
              return first+"class='sd-icon-nochecked' onmouseover ='onnocheckover(this)' onmouseout='onnocheckout(this)'"+last;
             
              
          };
          function oncheckmixout(e) {
          e.className = "sd-icon-checkmix";
           }
          function oncheckmixover(e) {
          e.className = "sd-icon-overcheckmix";
           }
          function onnocheckout(e) {
          e.className = "sd-icon-nochecked";
           }
          function oncheckout(e) {
          e.className = "sd-icon-checked";
           }
          function onnocheckover(e) {
          e.className = "sd-icon-overnochecked";
          }
          function oncheckover(e) {
          e.className = "sd-icon-overchecked";
           }
          function OnChangeCheck(rowIndexs,id)
          {
          var store=dijit.byId(id).store;
          var rowdata = dijit.byId(id.toString()).getItem(rowIndexs);
          if(rowdata.checked=='true'){
          store.setValue(rowdata,"checked",'false');
          if(rowdata.children!=null){
          findChildrenItem(rowdata,'false',id);
          }
          }
          else{
          store.setValue(rowdata,"checked",'true');
          if(rowdata.children!=null){
          findChildrenItem(rowdata,'true',id);
          }
          }
          var parentItem= getTreeParentItem(id,rowdata);
          if(parentItem!=null){
          findParentItem(parentItem,id);
          }
          }
          function findChildrenItem(thisItem,value,id){
          var store=dijit.byId(id).store;
          for(var k=0;k<thisItem.children.length;k++){
           
          var theChildren = thisItem.children[k];
          store.setValue(theChildren,"checked",value);
          if(theChildren.children!=null){
          findChildrenItem(theChildren,value,id);
          }
           
          }
          }
          function findParentItem(parentItem,id){
          var store=dijit.byId(id).store;
          var parentChecked = 0;
          if(parentItem!=null){
          var children = parentItem.children;
          for(var i=0;i<children.length;i++)
          {
          if(children[i].checked.toString()!='true'){
          if(children[i].checked.toString()=='mix'){parentChecked +=0.5;}
          else{parentChecked +=1;};
          }
              }
              if(!parentChecked)
              {
              store.setValue(parentItem,"checked",'true');
              }else{
              if(parentChecked!=parentItem.children.length||parentChecked!=parseInt(parentChecked)){ 
              store.setValue(parentItem,"checked",'mix');
              }
              else{
              store.setValue(parentItem,"checked",'false');
              };
              }
          }
          var superParent= getTreeParentItem(id,parentItem);
          if(superParent!=null){
          findParentItem(superParent,id);
          }

          }(id,parentItem);
          96     if(superParent!=null){
          97         findParentItem(superParent,id);
          98     }
          99 }
              寫的可能比較繁瑣,沒有優化,是用圖片控制的,因為formatter函數中不能使用dojo 的組件,這有點遺憾。圖片在dojo包的\dojox\form\resources\images中,自己找一下。getTreeParentItem是公司封裝的方法,查找父節點,這里就不貼了,網上找一找就行,希望對有這類任務的人有幫助

          posted on 2012-07-19 15:22 七孑 閱讀(420) 評論(0)  編輯  收藏 所屬分類: DOJO

          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          導航

          統計

          常用鏈接

          留言簿(1)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 易门县| 顺平县| 仙居县| 中方县| 攀枝花市| 突泉县| 新竹市| 始兴县| 金溪县| 天柱县| 丰镇市| 垦利县| 濉溪县| 竹山县| 鄱阳县| 寿光市| 河南省| 凌源市| 杨浦区| 融水| 鄂托克前旗| 漠河县| 南投县| 永靖县| 名山县| 虹口区| 桑日县| 涡阳县| 定日县| 溧阳市| 仁布县| 泰安市| 龙游县| 南部县| 旌德县| 襄樊市| 安多县| 新营市| 西和县| 道真| 嘉义县|