Ext-all.js не отвечает при показе / стыковывающихся столбцов сетки

StackOverflow https://stackoverflow.com//questions/24006785

  •  20-12-2019
  •  | 
  •  

Вопрос

Я столкнулся с проблемой, в которой файл ext-all.js зависает при попытке показать / скрыть столбцы сетки.

Я использую Extjs 4.1.2 на Mozilla Firefox 25.0.ОС - Ubuntu 12.10, просто чтобы уточнить.

Когда пользователь редактирует ряд через плагин, скрытые поля отображаются только так, чтобы пользователь мог их редактировать.После того, как редактирование завершено, эти столбцы снова становятся скрытыми.

Controller.js:

var hiddenColumns = []; //global array for storing columns

init: function() {
    this.control({
    ...
'myGrid': {
    beforeedit: function() {
        me.columnsVisibility('show');
    },
    afterrender: function(){
        var me      = this,
        formDataPanel   = me.getFormDataPanel(),
        activeGrid      = formDataPanel.getLayout().getActiveItem();

        for (i=0; i < activeGrid.columns.length; i++) {
        if (activeGrid.columns[i].hidden) {
            Ext.Array.push(hiddenColumns, activeGrid.columns[i]);
        }
        }
    },
            edit: function(editor, e) {
        var me      = this,
        usersStore      = me.getStore('Users'),
        alias           = me.getUserAlias(),
        record          = usersStore.findRecord('email', alias, false, true, true),
        fdupdate        = record.get('fdupdate');

        me.columnsVisibility('hide');
        if (fdupdate == 't') {
        try {
            e.store.sync();
        }
        catch (e) { }
        e.record.commit();
        } else {
        var store = me.getStore('Inspection');
        store.rejectChanges();
        Ext.Msg.alert('Alert!','This function is not currently available for you');
        }

            },
            ...
    }
   });

},
...
columnsVisibility: function(visible){
for (var i=0; i < hiddenColumns.length; i++) {
    if (visible == 'hide') {
    hiddenColumns[i].hide();
    } else if (visible == 'show') {
    hiddenColumns[i].show();
    }
}
},
...
.

mygrid.js:

   initComponent: function() {
        var filters = {
        ftype: 'filters',
        // encode and local configuration options defined previously for easier reuse
        encode: false, // json encode the filter query
        local: true
    },
Ext.apply(this, {
            title: 'Inspection',
            id: 'inspection', // This is required since title can be changed by filter functions to update status of the grid.
        store: 'Inspection',
        features: [filters],
        selModel: Ext.create('Ext.selection.CheckboxModel', { checkOnly: true }),
            plugins: [
                Ext.create('Ext.grid.plugin.RowEditing', {
                    clicksToEdit: 2
                })
            ],
        columns: [{
        text: 'ID',
        width: 35,
        dataIndex: 'id'
        },{
        text: 'Record Name',
        dataIndex: 'record_name',
        width: 70,//flex: 1,
        hidden: true,
        editor: {
            queryMode: 'local',
            displayField: 'record_name',
            valueField: 'record_name',
            editable: false
        },
        filter: {
            type: 'string'      
        }
        },{
        text: 'Date Created',
        dataIndex: 'date_created',
        width: 150,
        filter: {
            type: 'string'      
        }
        }]
    });
this.callParent(arguments);
    }
});
.

Пока мой код работает как предполагаемое, он заставляет мой браузер зависеть от умеренного количества времени, прежде чем подсказать мне сообщение об информировании о сценаре.

Я не уверен относительно того, находится ли эта проблема с моей версией Extjs, моим кодом или моим браузером.Если кто-то может помочь, это будет очень ценится.

Это было полезно?

Решение

Скрыть и шоу могут быть дорогими операциями, поскольку они включают манипулирование DOM и последующим браузером, отражающим.Для пары строк не создает значительную задержку, но по мере роста ряда строк вы можете испытывать замедление.

Я, вероятно, подумал бы, чтобы открыть отдельное окно «Ext» с формой, содержащей все поля для редактирования, не отображающихся и скрывающихся столбцов всех рядов сетки.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top