Это можно сделать, переопределив метод 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;
}
});