Checkbox extjs复选框标题问题

Checkbox extjs复选框标题问题,checkbox,extjs,extjs4,Checkbox,Extjs,Extjs4,我目前正在ExtJS中实施一个项目的一部分,需要我修改现有网格,以仅在具有特定状态(不同于an、NP、RS)的行上显示复选框,此状态由record.data.codiceStato中的值确定: selectionModel = Ext.create('Ext.selection.CheckboxModel', { checkOnly: true, listeners: { select: function (sm, idx, rec) {

我目前正在
ExtJS
中实施一个项目的一部分,需要我修改现有网格,以仅在具有特定状态(不同于an、NP、RS)的行上显示复选框,此状态由record.data.codiceStato中的值确定:

selectionModel = Ext.create('Ext.selection.CheckboxModel', {
    checkOnly: true,
    listeners: {
        select: function (sm, idx, rec) {
            alert("Look ma!");
        },
        beforeSelect: function (sm, idx, rec) {
            if (idx.data.codiceStato == 'RS' || idx.data.codiceStato == 'AN' || idx.data.codiceStato == 'NP')
                return false;
        }
    },
    renderer: function (value, metaData, record, rowIndex, colIndex, store, view) {
        if (record.data.codiceStato != 'RS' && record.data.codiceStato != 'AN' && record.data.codiceStato != 'NP')
            return '<div style="margin-left: -1px;" class="' + Ext.baseCSSPrefix + 'grid-row-checker"> </div>';

        else
            return '';
    }
});
selectionModel=Ext.create('Ext.selection.CheckboxModel'{
checkOnly:对,
听众:{
选择:功能(sm、idx、rec){
警惕(“看妈妈!”);
},
beforeSelect:功能(sm、idx、rec){
如果(idx.data.codiceStato='RS'| | idx.data.codiceStato='AN'| | idx.data.codiceStato=='NP')
返回false;
}
},
渲染器:函数(值、元数据、记录、行索引、共索引、存储、视图){
if(record.data.codiceStato!=“RS”&&record.data.codiceStato!=“AN”&&record.data.codiceStato!=“NP”)
返回“”;
其他的
返回“”;
}
});

在选择前,我在我的
监听器中写了一个复选框,以避免复选框选中不具有此状态的行,从而使其正常工作。现在唯一的问题是标题复选框,事实上,当我第一次单击它时,它会启用带有复选框的所有行,但当我再次单击它时,它不会取消选中它们。有什么解决办法吗?谢谢

基本上有一些代码(
Ext.selection.CheckboxModel.updateHeaderState
)通过查看selected.count=store.count来确定是否需要检查标头。在您的情况下,它不是,所以您需要在代码中重写此函数,以便selected.count=selectable.count

不过,这是一个私有方法,所以Sencha不能保证在不同版本之间保留它,所以升级后您需要关注它

基本上,使用selmodel并添加一个对象。这将覆盖框架中通常存在的内容

var selModel = Ext.create('Ext.selection.CheckboxModel', {
    ...
    updateHeaderState: function() {
         // copy code from your Ext framework here, but modified for your use case
    }
});

我无法覆盖该方法:(