Extjs Grid ApplyState не отражает изменения |Скрыть вопрос - PullRequest
0 голосов
/ 10 мая 2019

Когда у нас есть несколько родительско-дочерних сеток, и мы хотим переконфигурировать сетку после вызова загрузки следующим образом:

listeners: {
     'afterrender': function (grid) {      
      var state =grid.getState();
      state.columns[1].hidden= true;
      grid.applyState(state); 
    }
}

Это поведение все еще воспроизводимо в ExtJS 6.5.1.

Например https://www.sencha.com/forum/showthread.php?306941-Apply-state-after-grid-reconfigure

Ответы [ 2 ]

0 голосов
/ 23 мая 2019

Ну, это все еще проблема с applyState. Когда сетка имеет несколько скрытых столбцов, и мы используем функцию applyState, это приводит к сбою нашей сетки. Таким образом, мы пропустили скрытую часть свойства, хотя она работает гладко для изменения ширины, фильтров и т. Д.

listeners: {
     'afterrender': function (grid) {      
      var state =grid.getState();
      state.columns[1].hidden= false;
      grid.applyState(state); 
      grid.columns[3].hidden = true;
    }
}

если вы вручную установите скрытое свойство столбца, оно будет скрыто.

0 голосов
/ 14 мая 2019

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

Ext.define('MyApp.overrides.Grid', {
            override: 'Ext.grid.Panel',

            applyState: function () {
                this.callParent(arguments);

                Ext.suspendLayouts();
                Ext.each(this.getColumns(), function (column) {
                    if (column.hidden) {
                        column.show();
                        column.hide();
                    }
                });
                Ext.resumeLayouts(true);
            }
    });
...