У меня есть сетка с более чем 1000 строк (пользователей) и контрольная колонка, которая используется для связи каждого пользователя с другим конкретным экземпляром (например, группой пользователей). Я реализовал кнопку «Выбрать все», которая делает следующее:
var items = view.store.data.items;
var dataIndex = 'dataIndexOfCheckColumn';
var check = true;
//view.store.suspendEvents();
for (var i = 0; i < items.length; i++)
{
var record = view.store.getAt(i),
record.set(dataIndex, check);
this.fireEvent('checkchange', this, i, check, record);
}
//view.store.resumeEvents();
Проблема с этим подходом заключается в том, что каждый «набор» записей запускает некоторые события (проверка, отсоединение и т. д.), а для 1000 записей это слишком много. Chrome делает это почти за одну секунду, но IE (9,10) — это боль в «...» -> почти 2 минуты.
Есть ли другой способ сделать это? Я думаю о приостановке событий в магазине, затем их возобновлении и синхронизации хранилища с сеткой, но я не нашел в документах, как добиться чего-то подобного.
Я использую ExtJs версии 4.0.1.