【问题标题】:Extjs filtering is not Working properlyExtjs 过滤无法正常工作
【发布时间】:2016-06-16 06:31:39
【问题描述】:

我是 ExtJS 的新手。我已经编写了一个在网格中应用过滤的代码,但它不能正常工作。附上我为应用过滤而编写的代码 sn-p。 没有过滤器,网格会正确显示在面板上。

        Ext.create('Ext.data.Store', {
        storeId: 'userDetailsStore',
        fields: ['username', 'firstname', 'lastname', 'role', 'activeuser'],
        data: {'items': [
                {"username": 'USER1', "USER1-firstname": "firstname", "lastname": "USER1-lastname",
                    "role": 'Admin', "activeuser": 'Y'},
                {"username": 'USER2', "firstname": "USER2-firstname", "lastname": "USER2-lastname",
                    "role": 'Type1', "activeuser": 'Y'},
                {"username": 'USER3', "firstname": "USER3-firstname", "lastname": "USER3-lastname",
                    "role": 'Type2', "activeuser": 'Y'},
                {"username": 'USER4', "firstname": "USER4-firstname", "lastname": "USER4-lastname",
                    "role": 'Type3', "activeuser": 'Y'},
                {"username": 'USER5', "firstname": "USER5-firstname", "lastname": "USER5-lastname",
                    "role": 'Admin', "activeuser": 'Y'},
                {"username": 'USER6', "firstname": "USER6-firstname", "lastname": "USER6-lastname",
                    "role": 'Type4', "activeuser": 'Y'}
            ]},
        proxy: {
            type: 'memory',
            reader: {
                type: 'json',
                root: 'items'
            }
        }
    });

    var filters = Ext.create('Ext.ux.grid.FiltersFeature',
            {
        // ftype: 'filters',
        encode: false,
        autoReload: false,
        local: true,
        filters: [{
                type: 'string',
                dataIndex: 'username'
            }, {
                type: 'string',
                dataIndex: 'firstname',
                disabled: true
            }, {
                type: 'string',
                dataIndex: 'lastname'
            }, {
                type: 'list',
                dataIndex: 'role',
                options: ['Admin', 'Type1', 'Type2', 'Type3', 'Type4'],
                phpMode: true
            }, {
                type: 'string',
                dataIndex: 'activeuser'
            }]
    };

    var user_view_grid = new Ext.create('Ext.grid.Panel', {
        title: 'User Details',
        border: false,
        align: 'stretch',
        store: Ext.data.StoreManager.lookup('userDetailsStore'),
        loadMask: true,
        features: [filters],
        bbar: Ext.create('Ext.toolbar.Paging', {
            store: Ext.data.StoreManager.lookup('userDetailsStore')
        }),
        columns: [
            {header: 'Username', dataIndex: 'username', flex: 1},
            {header: 'FirstName', dataIndex: 'firstname', flex: 1},
            {header: 'LastName', dataIndex: 'lastname', flex: 1},
            {header: 'Role', dataIndex: 'role', flex: 1},
            {header: 'ActiveUser', dataIndex: 'activeuser', align: 'center'}
        ],
        height: 200
    });

    var user_view_panel = new Ext.Panel({
        region: 'north',
        margins: '2 0 0 0',
        cmargins: '5 5 0 0',
        height: 200,
        split: true,
        collapsible: false,
        border: true,
        xtype: 'panel',
        bodyStyle:
                {
                    "background-color": "#F8F8F8",
                    "padding-left": "5px",
                    "padding-right": "5px",
                    "padding-bottom": "5px"
                },
        items: [
            user_view_grid
        ]
    });

    Ext.create('Ext.container.Viewport', {
        layout: 'fit',
        items: [{
                layout: 'border',
                defaults: {
                    collapsible: false,
                    split: false,
                    bodyStyle: 'padding:2px'
                },
                items: [
                    {
                        collapsible: false,
                        region: 'center',
                        title: 'User Management',
                        bodyStyle: {"background-color": "#F8F8F8"},
                        layout: {
                            type: 'border',
                            align: 'stretch'
                        },
                        items: [
                            user_view_panel
                        ]
                    }
                ]
            }],
        renderTo: Ext.getBody()
    });

我正在使用 extjs-4.2.2

【问题讨论】:

  • 如果您使用的是 4.2.2,为什么要使用 4.1 和 5 标记问题?

标签: extjs extjs4 extjs4.1 extjs4.2 extjs5


【解决方案1】:

在浏览器控制台中,您应该收到 404 错误,因为“无法加载feature/filters.js”。这是因为ftype:'filters' 没有提供ExtJS 必须包含哪些文件才能使所需的javascript 可用的信息。您可以在应用 ftype 之前手动加载文件:

Ext.require('Ext.ux.grid.FiltersFeature');

告诉 ExtJS 加载文件src/ux/grid/FiltersFeature.js,或者你可以采用不带ftype的方法:

var filters = Ext.create('Ext.ux.grid.FiltersFeature',{
    encode: false,
    ...

【讨论】:

  • 我已经尝试了上述两个选项,但仍然得到相同的结果。附上更新的代码和上面的错误截图。
  • @BijoyBahuleyan 检查文件是否在您的文件系统中可用。它当然可以在 Sencha fiddle 和 Ext ZIP 文件中找到。
  • 当我包含以下代码时它起作用了。 Ext.Loader.setConfig({ enabled: true, paths: { 'Ext.ux': 'ext/src' } });
猜你喜欢
  • 1970-01-01
  • 2013-09-15
  • 1970-01-01
  • 1970-01-01
  • 2015-02-14
  • 2013-08-16
  • 2012-11-16
相关资源
最近更新 更多