如何筛选EXTJS网格列表筛选器?

eimct9ow  于 2022-10-18  发布在  其他
关注(0)|答案(1)|浏览(234)

我有一个带有列表过滤器的网格。当我筛选一列时,其他列表筛选器不会与结果一起筛选
我做了一个测试小提琴来证明这一点:

当我过滤到项目负责人角色时,我只有一个活动状态的结果(戴安娜)。但当我查看状态筛选器时,我看到两个(活动和挂起):

有没有办法只显示与结果关联的筛选器?
注意:我使用的是ExtJS 6.5.2。

bt1cpqcv

bt1cpqcv1#

这可以通过覆盖列表筛选器的方法getOptionsFromStore来完成,而不使用具体的(从网格存储自动生成的)存储。也可以在此基础上创建新组件
小提琴

Ext.define('Ext.grid.filters.filter.DynamicList', {
    extend: 'Ext.grid.filters.filter.List',
    alias: 'grid.filter.d-list',
    type: 'd-list',
    getOptionsFromStore: function (store) {

        var me = this,
            data = store.getData(),
            map = {},
            ret = [],
            dataIndex = me.dataIndex,
            labelIndex = me.labelIndex,
            recData, idValue, labelValue;

        if (store.isFiltered() && !store.remoteFilter ) {
            data = data.getSource();
        }

        //each filtered records, not all
        Ext.Array.each(store.getRange(),function (record) {
            recData = record.data;

            idValue = recData[dataIndex];
            labelValue = recData[labelIndex];

            if (labelValue === undefined) {
                labelValue = idValue;
            }

            if (!map[idValue]) {
                map[idValue] = 1;
                ret.push([idValue, labelValue]);
            }
        }, null, {
            filtered: true,
            collapsed: true
        });

        return ret;
    }
});

相关问题