Ext中ext:CheckboxSelectionModel 的checkbox有时候不会去掉选中的方法

使用ext:CheckboxSelectionModel 有个时候莫名其妙的不能清空所选中的checkbox,即使在ext:GridPanel设置了SelectionMemory="Disabled" 属性也一样,就仿照下面的选择所有写了一个清空的。

//自动判断是否全选并选中或不选中表头的checkbox
function autoCheckGridHead(){
var hd_checker = grid.getEl().select('div.x-grid3-hd-checker'); //CompositeElementLite/CompositeElement
    var hd = hd_checker.first(); //呵呵,终于搞定了,这句测了好久,才找对对象;
    if(hd != null){  
    if(grid.getSelectionModel().getSelections().length != grid.getStore().getCount()){    //没有全选的话
                //清空表格头的checkBox   
                if(hd.hasClass('x-grid3-hd-checker-on')){
                hd.removeClass('x-grid3-hd-checker-on');     //x-grid3-hd-checker-on
                //grid.getSelectionModel().clearSelections();
            }
            }else{
            if(grid.getStore().getCount() == 0){ //没有记录的话清空;
            return;
            }
            hd.addClass('x-grid3-hd-checker-on');
                grid.getSelectionModel().selectAll();
            }
        } 
}

上面这个是网上常见的选择所有的checkbox方法,但目前有需要,就是选中之后不能自动去掉所选中的checkbox,所以做了如下的:

 function ClearChecker()
      {
      var grid=Ext.getCmp("GridResourceList");
        var hd_checker = grid.getEl().select('div.x-grid3-hd-checker'); //CompositeElementLite/CompositeElement
            var hd = hd_checker.first(); 

            if(hd != null){  
           
                 hd.addClass('x-grid3-hd-checker-on');
                  hd.removeClass('x-grid3-hd-checker-on'); //这个是去掉上面标题中的
                 grid.getSelectionModel().clearSelections();//这个是清空所有的,为不选中
                                     //grid.getSelectionModel().selectAll();这个是设置选中所有的
                    
                  }

      }

 

前台调用直接调用函数就可以了,如果要在cs中调用也简单,在你操作的方法中

ScriptManager1.ScriptManager.AddScript("ClearChecker();");

其中ScriptManager1是页面

 <ext:ScriptManager ID="ScriptManager1" runat="server" AjaxMethodNamespace="ResourceAuditNamespace">
 </ext:ScriptManager>

的ID;

posted @ 2012-01-10 11:19  Jake.Xu  阅读(...)  评论(... 编辑 收藏