#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()
после того, как вы возобновите работу с макетами.
Другим вариантом было бы вызвать реконфигурацию, однако при этом «скрытые» столбцы удаляются из меню столбцов.