Как эффективно скрыть столбцы сетки

#extjs #extjs4

#extjs #extjs4

Вопрос:

У меня очень большая сетка с большим количеством столбцов. Когда пользователь нажимает на кнопку, он вызывает функцию, которая анализирует все хранилище — ячейку за ячейкой, если она не находит изменений в определенном столбце, она скрывает его, в противном случае столбец остается видимым. Очень часто скрывается довольно большое количество столбцов, но, как я вижу, эта операция — скрытие столбцов со всем этим рендерингом — очень «тяжелая», так что мой браузер может предупредить, что код выполняется слишком долго. Я действительно прячусь вот так:

 var cols=grid.headerCt.getGridColumns(); 
Ext.each(cols, function (item, index, all){
  if(condition) item.setVisible(false); 
});
 

Я пытался использовать Ext.suspendLayouts() и Ext.resumeLayouts() , но это приводит к ошибке. Несмотря на то, что операция теперь выполняется быстрее, вместо скрытия столбцов скрываются только заголовки столбцов. Итак, мне нужно более оптимальное и рабочее решение.

Ответ №1:

suspendLayouts() и последующие resumeLayouts() — это один из способов. Вам нужно позвонить только grid.getView().refresh() после того, как вы возобновите работу с макетами.

Другим вариантом было бы вызвать реконфигурацию, однако при этом «скрытые» столбцы удаляются из меню столбцов.