Задать вопрос
@prokopov-vi

Как правильно сделать фильтр в колонках таблицы?

Играюсь уже не первый час с фильтрациею столбцов. Почему то не отображается CheckBox фильтрации в колонках.

Ext.Loader.setConfig({enabled: true});
Ext.Loader.setPath('Ext.ux', 'extjs/examples/ux');

Ext.require([
    'Ext.grid.*',
    'Ext.data.*',
    'Ext.util.*',
    'Ext.state.*',
    'Ext.selection.CellModel',
    'Ext.window.MessageBox',
    'Ext.ux.grid.FiltersFeature',
    'Ext.ux.grid.filter.ListFilter'
]);

Ext.onReady(function() {

    var filters = {
        ftype: 'filters',
        encode: false,
        local: true
    };
    
    Ext.define('Stock', {
        extend: 'Ext.data.Model',
        idProperty: 'id',
        fields: [
            {name: 'id', type: 'int'},
            {name: 'name', type: 'string'},
            {name: 'symbol', type: 'string'},
            {name: 'open', type: 'float'},
            {name: 'last', type: 'float'},
            {name: 'change', type: 'float'},
            {name: 'type', type: 'string'},
            {name: 'split', type: 'boolean'},
            {name: 'date', type: 'date'},
            {name: 'level', type: 'int'}
        ]
    });

    var store = Ext.create('Ext.data.Store', {
        model: 'Stock',
        autoLoad: true,
        autoSync: true,
        proxy: {
            type: 'ajax',
            api: {
                read: 'stocks_4.php?action=view',
                create: 'stocks_4.php?action=create',
                update: 'stocks_4.php?action=update',
                destroy: 'stocks_4.php?action=destroy'
            },
            writer: {
                type: 'json',
                writeAllFields: true,
                root: 'data'
            },
            reader:{
                type: 'json',
                root: 'data',
                messageProperty: 'message'
            }
        }
    });

    function change(val) {
        var s = Ext.util.Format.number(val,'0.00');
        if (val > 0) {
            return '<span style="color:green;">' + s + '</span>';
        } else if (val < 0) {
            return '<span style="color:red;">' + s + '</span>';
        }
        return val;
    }

    var cellEditing = Ext.create('Ext.grid.plugin.CellEditing', {
        clicksToEdit: 1
    });

    var grid = Ext.create('Ext.grid.GridPanel', {
        store: store,
        stateful: true,
        stateId: 'stateGrid',
        dockedItems: [
            {
            xtype: 'toolbar',
            items: [
                {
                iconCls: 'icon-add',
                text: 'Додати',
                scope: this,
                handler: function(){
                    var rec = new Stock({
                        id  : null,
                        open: 0,
                        last: 0
                    });
                    store.insert(0, rec);
                }
            }, {
                iconCls: 'icon-delete',
                text: 'Видалити',
                itemId: 'delete',
                scope: this,
                handler: function(){
                    var row = grid.getView().getSelectionModel().getCurrentPosition().row;
                    if (row) {
                        store.removeAt(row);
                    }

                }
            }, {
                text: 'Синхронізувати',
                itemId: 'sync',
                scope: this,
                handler: function(){
                    store.sync();
                }
            }]
        },
            {
                xtype: 'toolbar',
                dock: 'bottom',
                items: [{
                    xtype: 'tbtext',
                    text: '<b>Параметри:</b>'
                }, ' ', {
                    text: 'Автосинхронізація',
                    enableToggle: true,
                    pressed: true,
                    tooltip: 'Коли увімкнена - сховище автоматично зберігатиме дані',
                    scope: this,
                    toggleHandler: function(btn, pressed){
                        store.autoSync = pressed;
                    }
                }, {
                    text: 'Пакетний режим',
                    enableToggle: true,
                    pressed: true,
                    tooltip: 'Коли увімкнений, сховище намагатиметься відправляти зміни до декількох записів одним запитом',
                    scope: this,
                    toggleHandler: function(btn, pressed){
                        store.getProxy().batchActions = pressed;
                    }
                }, {
                    text: 'Зберігати всі поля',
                    enableToggle: true,
                    pressed: true,
                    tooltip: 'Коли увімкнено, на сервер відправлятимуться усі поля, а не лише змінені',
                    scope: this,
                    toggleHandler: function(btn, pressed){
                        store.getProxy().getWriter().writeAllFields = pressed;
                    }
                }]
            }],
        columns: [
            {
                text: 'ID',
                width: 15,
                align: 'center',
                hidden: true,
                dataIndex: 'id',
                editor: {

                }
            },
            {
                text: 'Company',
                flex: 1,
                hideable: false,
                dataIndex: 'name',
                editor:{
                    sllowDlank: false
                },
                filterable: true
        
                
            },
            {
                text     : 'Symbol',
                width    : 75,
                sortable : false,
                dataIndex: 'symbol',
                filter: {
                    type: 'list',
                    options: ['MSFT', 'NOK', 'ORCL', 'SBUX']
                }    
            },
            {
                text     : 'Split',
                xtype      : 'booleancolumn',
                align      : 'center',
                trueText : 'Yes',
                falseText: 'No',
                dataIndex: 'split',
                filterable: true
            },
            {
                text     : 'Last Updated',
                width    : 85,
                sortable : true,
                renderer : Ext.util.Format.dateRenderer('d.m.Y'),
                dataIndex: 'date',
                filterable: true,
                editor: {
                    xtype: 'datefield',
                    format: 'd.m.Y',
                    minValue: '01.01.2012',
                    disabledDays: [0, 6],
                    disabledDaysText: 'На вихідні торги не проводяться'
                }
            }
        ],
        height: 350,
        width: 800,
        title: 'Table stocks',
        renderTo: "grid-example",
        features: [filters],
        selModel: {
            selType: 'cellmodel'
        },
        plugins: [cellEditing]
    });
});


Помогите.. Не могу понять, что я делаю не правильно!!!
  • Вопрос задан
  • 838 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы