Не работает RowEditing в Ext JS

250
26 февраля 2017, 09:59

В grid колонки и данные приходят динамически, при выборе категории в TreePanel. После получения значений с сервера у грида дергаю метод reconfigure(store,col). У всех колонок уникальный dataindex, но плагин RowEditing отказывается работать.

Вот такой результат получается в процессе изменения данных, изменились данные только у 3 колонок, остальные остались. Если выбрать другую таблицу, там вообще могут не меняться данные после update, не понятно от чего зависит.

Ext.define('MVC.view.Main', {
show: function () {
    var store = Ext.create('Ext.data.Store', {
        fields: ['HeadClue', 'Density', 'errDens', 'MethodD', 'bknumber', '_methodD'],
        autoLoad: false,
        proxy: {
            type: 'ajax',
            method: 'get',
            url: 'rest/table/density',
            reader: {
                type: 'json',
                root: 'data',
                totalProperty: 'total'
            },
            paramsAsJson: true
        }
    });
    var col = [];
    var rowEditing = Ext.create('Ext.grid.plugin.RowEditing', {
        clicksToMoveEditor: 1,
        autoCancel: false
    });
    var contentPanel = Ext.create('Ext.grid.Panel', {
        title: 'Таблица',
        region: 'center',
        store: store,
        columns: col,
        bbar: Ext.widget('pagingtoolbar', {
            store: store,
            displayInfo: true,
            displayMsg: 'Данных {0} - {1} of {2}'
        }),
        plugins: [rowEditing],
        tbar: [
            {
                text: 'Добавить новую запись',
                handler: function () {
                    rowEditing.cancelEdit();
                    var prev = store.data.items[0].data;
                    var newRow = {};
                    for (var property  in prev) {
                        if (prev.hasOwnProperty(property)) {
                            newRow[prev[property]] = null;
                        }
                    }
                    store.insert(0, newRow);
                    rowEditing.startEdit(0, 0);
                }
            },
            {
                text: 'Обновить данные',
                handler: function () {
                    store.reload();
                }
            },
            {
                text: 'Сохранить изменения',
                handler: function () {
                }
            },
            {
                text: 'Удалить запись',
                handler: function () {
                    var sm = contentPanel.getSelectionModel();
                    rowEditing.cancelEdit();
                    store.remove(sm.getSelection());
                    if (store.getCount() > 0) {
                        sm.select(0);
                    }
                }
            },
            '->',
            {
                xtype: 'triggerfield',
                trigger1Cls: Ext.baseCSSPrefix + 'form-clear-trigger',
                trigger2Cls: Ext.baseCSSPrefix + 'form-search-trigger'
            }
        ]
    });
    var treePanel = Ext.create('Ext.tree.Panel', {
        id: 'tree-panel',
        title: 'Категории базы данных',
        region: 'north',
        height: '100%',
        minSize: 150,
        rootVisible: false,
        autoScroll: true,
        root: {
            expanded: true,
            children: [
                {text: "Акустооптические свойства", leaf: true, entity: 'Acop'},
                {text: "Область гомогенности соединения", leaf: true, entity: 'Sist'},
                {text: "Теплоемкость", leaf: true, entity: 'Heat'},
                {text: "Плотность", leaf: true, entity: 'Density'},
                {text: "Пьезоэлектрические коэффициенты", leaf: true},
                {text: "Твердость", leaf: true},
                {text: "Растворимость", leaf: true},
                {text: "Температура плавления", leaf: true},
                {text: "Температура Кюри", leaf: true},
                {text: "Данные по полиморфным модификациям", leaf: true},
                {text: "Параметры элементарной ячейки", leaf: true},
                {text: "Тепловое расширение", leaf: true},
                {text: "Теплопроводность", leaf: true},
                {text: "Диэлектрическая проницаемость", leaf: true},
                {text: "Диэлектрические потери", leaf: true},
                {text: "Коэффициенты электромеханической связи", leaf: true},
                {text: "Упругие жесткости (податливости)", leaf: true},
                {text: "Область оптической прозрачности", leaf: true},
                {text: "Показатели преломления", leaf: true},
                {text: "Коэффициенты Селмейера", leaf: true},
                {text: "Электрооптические коэффициенты", leaf: true},
                {text: "Нелинейно-оптические коэффициенты", leaf: true},
                {text: "Компоненты тензора Миллера", leaf: true},
                {text: "Упруго(пьезо)оптические коэффициенты", leaf: true},
                {text: "Коэффициенты затухания упругих волн", leaf: true},
                {text: "Подписи к рисункам", leaf: true}
            ]
        }
    });
    treePanel.getSelectionModel().on('select', function (selModel, record) {
        if (record.get('leaf')) {
            Ext.Ajax.request({
                url: 'rest/table/columns',
                params: {entity: record.get('entity')},
                method: 'GET',
                success: function (response) {
                    col = JSON.parse(response.responseText);
                    col.forEach(function (item) {
                        item.editor = {allowBlank: true}
                    });
                    store.proxy.url = 'rest/table/';
                    store.on('load', function (st) {
                        contentPanel.reconfigure(store, col);
                    });
                    store.load({
                        params: {
                            entity: record.get('entity')
                        }
                    });
                }
            });
        }
    });
    var viewport = Ext.create('Ext.Viewport', {
        layout: 'border',
        title: ' Панель работы с БД',
        style: 'background: #efefe8',
        items: [{
            xtype: 'box',
            id: 'header',
            region: 'north',
            html: '<h1> Панель работы с БД</h1>',
            height: 50
        }, {
            layout: 'border',
            id: 'layout-browser',
            region: 'west',
            border: false,
            split: true,
            margins: '2 0 5 5',
            width: 290,
            minSize: 100,
            maxSize: 500,
            items: [treePanel]
        },
            contentPanel
        ],
        renderTo: Ext.getBody()
    });
    viewport.show();
}

}) ;

READ ALSO
Как найти соседний селектор в css?

Как найти соседний селектор в css?

Я знаю, что при коде видаclass1 +

308
Написать код C++ на Python

Написать код C++ на Python

Привет всем,имеется библиотека наDLL и хочу его использовать на Python

285