Extjs EXT JS 5-用于小时和分钟的自定义筛选器

Extjs EXT JS 5-用于小时和分钟的自定义筛选器,extjs,extjs4.2,extjs5,Extjs,Extjs4.2,Extjs5,我的值以分钟为单位,转换成小时和分钟(例如615分钟=10小时和15分钟),并显示在网格中。默认情况下,ExtJS5提供按字符串筛选。但我想按小时和分钟过滤。可能吗?如果是这样,请告诉我。您可以轻松扩展Ext.grid.filters.filter.Stringfilter来实现这一点 使用timefield的示例代码: Ext.define('Ext.ux.grid.filters.filter.Time', { extend: 'Ext.grid.filters.filter.Str

我的值以分钟为单位,转换成小时和分钟(例如615分钟=10小时和15分钟),并显示在网格中。默认情况下,ExtJS5提供按字符串筛选。但我想按小时和分钟过滤。可能吗?如果是这样,请告诉我。

您可以轻松扩展
Ext.grid.filters.filter.String
filter来实现这一点

使用timefield的示例代码:

Ext.define('Ext.ux.grid.filters.filter.Time', {
    extend: 'Ext.grid.filters.filter.String',
    alias: 'grid.filter.time',

    type: 'time',
    operator: 'eq',

    // change item template to timefield
    itemDefaults: {
        xtype: 'timefield',
        enableKeyEvents: true,
        format: 'H:i',
        hideEmptyLabel: false,
        iconCls: Ext.baseCSSPrefix + 'grid-filters-find',
        labelSeparator: '',
        labelWidth: 29,
        margin: 0,
        selectOnFocus: true
    },
    createMenu: function () {
        var me = this;
        me.callParent();

        // add handler to change event
        me.inputItem.on({
            scope: me,
            change: {
                fn: me.onChange,
                buffer: 200
            }
        });
    },
    // handle change event
    onChange: function(field) {
        this.setValue(field.getValue());
    },
    // set value - value comes as date
    setValue: function (value) {
        var me = this;

        if (me.inputItem) {
            me.inputItem.setValue(value);
        }

        // convert date to number
        me.filter.setValue(value.getHours() * 60 + value.getMinutes());

        if (value && me.active) {
            me.updateStoreFilter(me.filter);
        } else {
            me.setActive(!!value);
        }
    },
    activateMenu: function () {
        var value = this.filter.getValue();

        // convert number back to date
        this.inputItem.setValue(
            new Date(2008, 0, 1, Math.floor(value / 60), (value % 60), 0)
        );
    }
});

Fiddle:

是本地过滤器还是远程过滤器?您可以提供代码或屏幕截图吗?假设您正在谈论gridfilters插件,那么是的,您可以通过创建自己的自定义过滤器轻松完成这项工作。感谢您提供的解决方案,但只需要很少的更改。当我们过滤时间列时,它是过滤01:32格式的字符串,但我们有1:32。因此,它不会过滤1:32。