如何在extjs中的网格数字过滤器中只允许正数

问题描述 投票:0回答:2

这是我的第一篇文章,所以我可能会在错误的线程中发帖,对此感到抱歉。

我想限制数字网格过滤器中的负值,只允许网格中数字过滤器中的正数,我无法找到如何做到这一点。

这是我的代码

var myFilters =
{
    ftype     : 'filters',
    encode    : false,
    local     : false,
    extend    : 'Ext.data.Model',          
    filters    :
    [
        {
            type        : 'numeric',
            dataIndex    : 'utilization_per'
        }
    ]
};

deviceUtilGridPanel = new Ext.grid.GridPanel(
{
    features    : [myFilters],
    columns :
    [
          {id:'ru_utilization_per', header: "Utilization(%) (U)", sortable: true,     dataIndex: 'utilization_per', filterable: true, filter :{type:'numeric'},width:80}
    ]
});

任何帮助将不胜感激。

提前致谢。

extjs extjs4.1
2个回答
2
投票

您可以使用过滤器上的

menuItemCfgs
配置来修改过滤器菜单使用的表单字段。

var myFilters = {
    ftype:   "filters",
    encode:  false,
    local:   false,
    filters: [{
        dataIndex:    "utilization_per",
        type:         "numeric",
        menuItemCfgs: {
            minValue: 1  // Or 0, or whatever you want
        }
    }]
};

作为旁注(与答案并不真正相关),您的代码有一些问题。您不需要将

extend
添加到过滤器配置中,因为您没有扩展它,并且它不需要了解您的模型。列定义中的
header
配置已被弃用,取而代之的是
text
,它可以做同样的事情。默认情况下,列是可过滤的,因此您不需要
filterable: true
。如果您在过滤器功能配置中指定列过滤器,则无需在列级别指定它。


0
投票

如果有人正在寻找 ExtJS 现代工具包的答案 - 您可以使用 Ext.grid.plugin.filterbar.filters.Number.fieldDefaults 配置来实现 Eric 的答案,如下所示:

{
    text: 'Foo',
    xtype: 'numbercolumn',
    dataIndex: 'foo',
    filterType: {
        type: 'number',
        fieldDefaults: {
            minValue: 0
        }
    }
},
© www.soinside.com 2019 - 2024. All rights reserved.