如何设置一个Ext表格过滤器默认?(How do I set a Ext Grid Filter D

2019-09-17 11:37发布

我使用分机3.4格栅过滤器插件工作排序能电网。 我想默认情况下,主动筛选栏中的真正价值。 用户谁需要无用的记录可以删除过滤器。 如何指定一个默认的过滤柱和价值?

提前致谢!

colModel: new Ext.grid.ColumnModel({
    defaults: {
        sortable: true
        // How do I specify a default filter value
        //
        // Only show active records unless the user changes the filter...
    },
    columns: [{
        dataIndex:'f_uid',
        id:'f_uid',
        header:'ID',
        hidden:true
    }, {
        dataIndex:'f_name',
        id:'f_name',
        header:'Name',
    }, {
        xtype:'booleancolumn',
        dataIndex:'f_active',
        id:'f_active',
        header:'Active',
        filterable:true,
        trueText:'Active',
        falseText:'Inactive'
    }]

Answer 1:

我意识到这是一个老问题,但我花了一段时间才能找到解决的办法,所以我想我也有同感。

1)该过滤器可以使用在过滤器中的value属性来设置。

filter: {
          type: 'LIST',
          value: ['VALUE TO FILTER']
        }

2)为了最初筛选数据使用在商店中filterBy()方法。 这可能在OnRender将事件处理程序定义。

this.getStore().load({
    scope:this,
    callback: function() {
        // filter the store 
        this.getStore().filterBy(function(record, id) {
            // true will display the record, false will not
            return record.data.DATA_TO_FILTER == 'VALUE TO FILTER ';
        });
    }
});


Answer 2:

答案是在Filter.js源代码。 列定义中的过滤器对象可以用来配置默认的行为。

}, {
        xtype:'booleancolumn',
        dataIndex:'f_active',
        id:'f_active',
        header:'Active',
        trueText:'Active',
        falseText:'Inactive',
        filterable:true,
        filter: {
            value:1,    // 0 is false, 1 is true
            active:true // turn on the filter
        }
}


Answer 3:

我也遇到同样的问题,我发现@约翰的答案是正确的,我可以把它与样品工作http://dev.sencha.com/deploy/ext-4.0.0/examples/grid-filtering/grid-过滤local.html ,为电网滤波器local.js,只需添加如下代码:

grid.getStore().load({
    scope:this,
    callback: function() {
        // filter the store 
        grid.getStore().filterBy(function(record, id) {
            // true will display the record, false will not
            return record.data.size === 'small';
        });
    }
});

原代码store.load()之前,擦去该store.load()。 那么就只会显示尺寸在网页的第一负载等于“小”的记录。 干杯!



Answer 4:

我做了一个通用助手类,它可以让你在列定义设置任何缺省值。 https://gist.github.com/Eccenux/ea7332159d5c54823ad7

这应该与远程和静态存储工作。 请注意,这也适用于filterbar插件。

所以,你的列项是一样的东西:

{
    header: 'Filename',
    dataIndex: 'fileName',
    filter: {
        type: 'string',
        // filename that starts with current year
        value: Ext.Date.format(new Date(), 'Y'),
        active:true
    }
},

然后在你的窗口组件时,只需添加类似:

initComponent: function() {
    this.callParent();

    // apply default filters from grid to store
    var grid = this.down('grid');
    var defaultFilters = Ext.create('Ext.ux.grid.DefaultFilters');
    defaultFilters.apply(grid);
},


文章来源: How do I set a Ext Grid Filter Default?