如何在ExtJS上使用多个gridfilter类型?

时间:2019-06-07 11:22:03

标签: javascript extjs extjs5

我目前正在网格面板上的列上使用SQL时间戳(日期和时间)值。为了正确过滤,我需要列标题上的日期和时间菜单。结合使用“日期”和“数字”类型就足够了。

换句话说,我需要具有日期和数字类型过滤器菜单的列标题菜单。如何管理将两种过滤器类型应用于列标题菜单?如果那不能直接起作用,那么如何构建一个结合日期和数字类型的自定义过滤器?

数字类型:

enter image description here

日期类型: enter image description here

编辑:在@abeyaz帮助下,我设法用数字和日期字段构建了一个自定义列过滤器。虽然,我无法找到一种方法来更改适用于商店的远程过滤器的字段上的值。我应该如何设置用户在数字字段上按Enter键时要调用的事件,例如,更改商店过滤器数组?

enter image description here

1 个答案:

答案 0 :(得分:2)

没有内置的日期时间网格过滤器。但是,您可以自己轻松实现它。首先,检查日期过滤器代码。您必须像日期类一样,创建一个扩展Ext.grid.filters.menu.DateTime的类Ext.grid.filters.menu.Base。你能做的是而不是在datefield中使用items,应该使用包含datefieldtimefield的字段容器。以下示例将为您提供一个想法:

   menu: {
        items: {
            lt: {
                xtype: 'fieldcontainer',
                label: 'Before',
                placeholder: 'Before...',
                operator: '<',
                weight: 10,
                items: [
                    {
                        xtype: 'datefield', 
                        flex: 1,
                        listeners: {
                            change: 'up.onInputChange'
                        }
                    },
                    {
                        xtype: 'timefield', 
                        width: 80,
                        listeners: {
                            change: 'up.onInputChange'
                        }
                    }
                ]
            }
        }
    }

但是,由于项目不同,您还必须重写过滤方法以使其正常工作。我为fully working example

创建了一个小提琴