Extjs 3.4.0 - Как отфильтровать магазин, который читает JSON - PullRequest
0 голосов
/ 30 ноября 2018

Я пытаюсь отфильтровать JSON со значением 32 для поля privilege.Я пробовал несколько способов его фильтрации, но он возвращает мне все строки вместо отфильтрованных.

Ext.onReady(function () {        

        // create the data store
        var store = new Ext.data.Store({
            url: url,
            reader: new Ext.data.JsonReader({
                root: 'keys',
                idProperty: 'key',
                fields: ['key', 'name']
            }),
            autoLoad: true
        });

        store.filter({
            property: 'privileges',
            value: 32,
            type: 'int',
            exactMatch: true
        });

        //create the Grid
        var grid = new Ext.grid.GridPanel({
            store: store,
            columns: [
                {
                    id       :'name',
                    header   : 'Name', 
                    width    : 500, 
                    sortable : true, 
                    dataIndex: 'name'
                },
                {
                    header   : 'Key', 
                    width    : 500, 
                    sortable : false, 
                    dataIndex: 'key'
                },
                {
                    header   : 'Regenerate', 
                    width    : 300, 
                    dataIndex: ''
                }
            ],
            stripeRows: true,
            height: 350,
            title: 'Administrator Keys'
        });

        grid.render('restApiKeyContent');
    });

Текущий мой JSON, как показано ниже

{
"id": "abc123",
"name": "Test",
"queue": "test",
"expire": "2118-11-27T02:05:15.546778Z",
"keys": [
    {
        "key": "64654asdsad1sd1",
        "customer": "Test Customer",
        "externalUser": "123213",
        "name": "Jenna Testing API Key 1",
        "privileges": 31
    },
    {
        "key": "7c5362f98f084ae7b76b8484f660fdcf",
        "customer": "Test Customer",
        "externalUser": "123213",
        "name": "Jenna Testing API Key 1",
        "privileges": 16
    }
}

Оцените, если кто-то может подсказать мне, как фильтровать JSON по определенному полю, в котором Keys является корневым?

1 Ответ

0 голосов
/ 30 ноября 2018

Это может вам помочь.Добавьте поле privileges в JSONReader и хранилище фильтров после загрузки хранилища:

Ext.onReady(function () {        

        // create the data store
        var store = new Ext.data.Store({
            url: 'filter-store-extjs3.json',
            reader: new Ext.data.JsonReader({
                root: 'keys',
                idProperty: 'key',
                fields: ['key', 'name', 'privileges']
            }),
            autoLoad: true,
            listeners: {
                load: function() {
                    store.filter('privileges', '16', true, true);
                }
            }
        });

        var grid = new Ext.grid.GridPanel({
            renderTo: Ext.getBody(),
            store: store,
            columns: [
                {
                    id       :'name',
                    header   : 'Name', 
                    width    : 500, 
                    sortable : true, 
                    dataIndex: 'name'
                },
                {
                    header   : 'Key', 
                    width    : 500, 
                    sortable : false, 
                    dataIndex: 'key'
                },
                {
                    header   : 'Regenerate', 
                    width    : 300, 
                    dataIndex: ''
                }
            ],
            stripeRows: true,
            height: 350,
            title: 'Administrator Keys'
        });
});
...