2012-02-10 5 views
3

Я хочу сбросить столбцы сетки (скрыть/показать), ширину, посты без перезагрузки страницы. Я пытаюсь этоextjs grid restore columns (hide/show), width, postion

Ext.getCmp('inventoryResultGrid').applyState(firstState); 

, но это работает только для позиций.

+0

вы назвали grid.getView(). Refresh()? –

+1

Ext.getCmp ('inventoryResultGrid'). GetView(). Refresh(); не работает для меня :( –

ответ

0

Какая версия ExtJS?

От взгляда на источники GridPanel.applyState() в EXtJS 3.1.4: Применение состояния после столбцов действительно сохраняет только значения в конфигурации модели столбца, но не меняет текущие настройки (кроме позиции).

Нечто подобное должно сделать (непроверенные):

function restoreColumnState(grid, state) { 
    var cm = grid.getColumnModel(), 
     columns = state.columns, 
     columnState, 
     column, 
     columnIndex; 
    cm.suspendEvents(true); 
    for (var i = 0, len = columns.length; i < len; i++) { 
     columnState = columns[i]; 
     column = cm.getColumnById(columnState.id); 
     if (column) { 
      columnIndex = cm.getIndexById(columnState.id); 
      cm.setHidden(i, columnState.hidden); 
      cm.setColumnWidth(i, columnState.width); 
      if (columnIndex != i) { 
       cm.moveColumn(columnIndex, i); 
      } 
     } 
    } 
    cm.resumeEvents(); 
} 
+0

Я использую ExtJS 4, и сетка не имеет метода getColumnModel. – CoderDennis

2

Попробуйте Перенастроить метод, как это.

var grid = Ext.getCmp('inventoryResultGrid'); 
grid.reconfigure(grid.store, grid.initialConfig.columns); 

Вы можете найти документацию здесь http://docs.sencha.com/ext-js/4-1/#!/api/Ext.grid.Panel-method-reconfigure

+0

Кажется, что вы хотите восстановить состояние столбца до начальных значений конфигурации. Все еще не отвечает, почему ' applyState', похоже, ничего не делает. – CoderDennis