【问题标题】:Issue with extjs checkbox headerextjs 复选框标题的问题
【发布时间】:2018-07-26 15:18:22
【问题描述】:

我目前正在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 '';
    }
});

我在我的 beforeSelect 监听器中写了一个检查,以避免复选框选择不具有此状态的行并且它有效。现在唯一的问题是标题复选框,事实上,当我第一次单击它时,它会启用带有复选框的所有行,但是当我再次单击它时它不会取消选中它们。有什么解决办法吗?谢谢你

【问题讨论】:

    标签: checkbox extjs extjs4


    【解决方案1】:

    基本上有一段代码 (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
        }
    });
    

    【讨论】:

    • 我无法重写该方法 :(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-09
    • 1970-01-01
    • 2021-11-28
    • 1970-01-01
    相关资源
    最近更新 更多