2

我有一个网格,里面有很多记录。所以我想在每个列标题中添加过滤器以轻松过滤所需的数据。我已经看到了 sencha 文档中给出的示例。但是如何在 Extjs 4.2 版本中实现它。如何在其中使用 UX 类?有没有可用的插件?

我非常感谢你。

请帮我。

阿南德

4

4 回答 4

3

这是一个例子:

Ext.define('Webdesktop.view.admin.List', {
extend: 'Ext.grid.Panel',
alias: 'widget.admin_casoslist',
initComponent: function() {
    var me = this,
    filters = {
        ftype: 'filters',
        encode: false,
        local: true
    };

    Ext.apply(me, {
        title: 'gridTitle',
        store: List_CasSos_Store,

        filterable: true,
        features: [filters],
        closable: true, // fixme: need to set here, because has no effect in tabpanel defaults configuration
        autoScroll: true,
        columns: {
            items:[
            {
                text: 'header1',
                filter: {
                    type: 'string'
                },
                flex: 1,
                dataIndex: 'relation_patron_paraine'
            },{
                text:'header2',
                filter: {
                    type: 'list',
                    options: ['case4', 'case3', 'case2', 'case1']
                },
                hidden:true,
                flex: 1,
                dataIndex: 'etatsante'
            },{
                text:'header3',
                filter: {
                    type: 'numeric'
                },
                hidden:true,
                flex: 1,
                dataIndex: 'revenumnsuel'
            }
            ],
            defaults : {
                align: 'center'
            }
        }
    });
    me.callParent();
}

在控制器中:

uses: [
   'Webdesktop.view.admin.List',
    ...
   'Ext.ux.grid.FiltersFeature'
    ]
于 2013-06-13T14:32:53.487 回答
2

您需要将此添加到您的网格配置中:

plugins: [{
  ptype: 'gridfilters'
}],

然后在每一列中:

filter: {type: 'string', dataIndex: 'passengerFullName'},

请注意,过滤器取决于存储是远程过滤器还是本地过滤器。

请参阅此处了解更多信息:http ://docs.sencha.com/extjs/6.0.2-classic/Ext.grid.filters.Filters.html

于 2016-07-15T16:30:33.263 回答
1

要在标题中使用过滤器,grid您需要声明过滤器数组,然后将范围赋予网格。然后写

this.filters = new Ext.ux.grid.GridFilters({
            filters:this.filter
        }) ;

为此提供一个插件

this.plugins = [this.filters];

在哪里添加列写

gridEl.filter{
        type: 'list',
        dataIndex: "DATAINDEX",
        local : local,
        dataForFilter : data
    };
于 2016-07-21T11:20:24.823 回答
0

一种解决方案是捕获“列单击”列,获取要过滤的参数,然后在函数中将此过滤器放在网格存储上。

列示例

{
    header      : "email",
    dataIndex   : 'email',
    listeners : {
        click: {
            element: 'el', //bind to the underlying el property on the panel
            fn: function(){ 
                storeGrid.filter("email", /\.com$/); // email
                            storeGrid.sort('myField', 'ASC');
            }
        }
    }
},

Sencha Filter:过滤器商店

Sencha Sort:排序存储数据

于 2013-06-13T12:24:32.820 回答