В ExtJS, как я могу загрузить хранилище при отображении сетки? Я хочу, чтобы хранилище загружалось только тогда, когда отображается сетка (пользователь нажимает на кнопку, чтобы показать сетку, так что расточительно загружать магазин заранее). Я попробовал прослушиватель afterrender
, но он отображает маску загрузки в неправильном месте, а слушатель afterlayout
перезагружает сетку каждый раз, когда сетка изменяется.В ExtJS, как я могу загрузить хранилище при отображении сетки?
ответ
Это одна из тех вещей, которые могут быть немного больными, потому что они слишком много делали браузеру (особенно заметно в IE).
Мне нравится использовать комбинацию отсрочки, чтобы браузер восстановился достаточно долго, чтобы правильно отображать вещи.
var grid = new Ext.grid.GridPanel({
...,
listeners : {
render : function(grid){
grid.body.mask('Loading...');
var store = grid.getStore();
store.load.defer(100, store);
},
delay: 200
}
});
Игра со значением задержки/отсрочки должна дать вам желаемые результаты. Продолжительность времени, в течение которого вам нужно будет отложить/отложить, зависит от того, насколько сложна ваша сетка и насколько быстро работает браузер.
Также не забудьте удалить маску, когда загрузка вашего магазина завершена.
listeners: {
load: function(){
yourGrid.body.unmask();
}
}
ПРИМЕЧАНИЕ: Всего несколько уточнений к ответу Ллойда - вам не нужно, чтобы установить автозагрузку ложь, потому что по умолчанию (то есть: не устанавливать его на всех), и это звучит как из ваше описание, которое вы хотели бы использовать метод загрузки магазинов, вместо перезагрузки.
Вы можете установить autoLoad в false для магазина и просто вызвать store.reload(); когда пользователь нажимает кнопку, чтобы показать сетку.
Это работает, но тогда это означает, что сетка не несет ответственности за собственный магазин. Это нормально, если вы делитесь хранилищем через несколько компонентов, но для одной сетки я предпочитаю, чтобы сетка отвечала за загрузку магазина. –
Вы рассматривали обращение activate
событие? Вы можете добавить обработчик событий, который загружает данные на событие activate
, а затем удаляет себя.
this.on('activate', function(){
this.un('activate', arguments.callee);
this.store.load();
}, this);
Здесь this
относится к GridPanel
.
- 1. Как я могу скопировать строку сетки Extjs
- 2. Как я могу фильтровать хранилище с двумя полями в extjs?
- 3. не удалось сохранить данные json в хранилище сетки в extjs
- 4. Очистка панели ExtJS при щелчке ячейки сетки
- 5. Как я могу создать контекстное меню для сетки extjs
- 6. extjs 2.3 сбой сетки при обновлении магазина
- 7. Как я могу загрузить SVG динамически в Extjs 4?
- 8. Как я могу загрузить вложенные формы в extjs
- 9. Как фильтровать хранилище в extjs?
- 10. Модель выбора сетки ExtJS
- 11. как я изменить brackground цвет ExtJS сетки
- 12. ExtJS 6 - обновить прокси-хранилище и сохранить текущее состояние сетки
- 13. Фильтр сетки Extjs - Dynamic ListFilter
- 14. Могу ли я динамически менять хранилище сетки Ext JS
- 15. Как применить хранилище к выноску в ExtJS?
- 16. ExtJS 6 Хранилище фильтров сетки по фамилии или имени middlen
- 17. ExtJS применить форматирование столбца сетки
- 18. Сортировка сетки Extjs
- 19. Как загрузить/экспортировать данные сетки в excel?
- 20. ExtJS: Как разместить панели сетки
- 21. Как отменить событие сортировки сетки ExtJS?
- 22. extjs скрытая панель мерцания при слайд-шоу при отображении
- 23. Extjs-фильтрация combobox в редакторе сетки
- 24. Как я могу решить ошибку при отображении результата декоратора?
- 25. Sencha ExtJS пустые строки сетки
- 26. Форматирование столбца сетки ExtJS
- 27. Экран сетки EXTJS
- 28. Проблема При отображении изображения
- 29. Проверка содержимого сетки ExtJS
- 30. Как удалить дублирующее значение в хранилище extjs
Это хороший подход, хотя я бы применил только маскировку, если вы обнаружите, что вам это действительно нужно. Если он загружается слишком быстро, тогда маска может выглядеть как мерцание. Кроме того, убедитесь, что вы открываете маску в обработчике событий загрузки хранилища. Пример комбинации браузера макета «Вкладки с вложенными макетами» использует это при методе рендеринга загрузки магазина во внутренней сетке: http://www.extjs.com/deploy/dev/examples/layout-browser/layout-browser.html –
Я согласен с комментариями Брайана - забудьте об этом, если ваши данные вернутся менее чем за 5 секунд. Пользователь никогда этого не заметит. Добавил лакомый кусочек об удалении маски, спасибо. –
Ницца .. Просто интересно, что такое «задержка: 200»? Это необходимо? – Gugan