Процесс после загрузки сетки полностью с помощью ExtJS
Я использую ExtJS для загрузки данных в сетку, и я хочу добавить некоторые дополнительные процессы после того, как данные были полностью помещены в сетку.
мой контекст, После того, как данные были помещены в сетку, я проверю все строки и отмечу некоторые из них как отключенные на основе указанного условия и помещу подсказку в строку (объясните, почему она отключена). Я попытался использовать 2 события: "afterrender" Grid и "load" магазина grid, но они не сработали.
, потому что grid's 'afterrender'
был уволен, когда первая сетка инициализация, не относится к загрузке данных. store's 'load'
был запущен, когда данные были prefetch для хранения (не рендеринга на экране), поэтому я не могу получить строку <div>
стиль его, как инвалида.
Итак, что такое событие для обнаружения, когда данные были загружены и полностью визуализированы в сетке? И как я могу выполнить это требование?
8 ответов
Я думаю, что для вас задача вам не нужно ждать, пока сетка не будет загружена, а использовать viewConfig
опция для панели сетки, чтобы настроить, как именно отображать строки:
viewConfig: {
getRowClass: function(r) {
if (r.get('disabled'))
return 'disabled-class';
else
return '';
}
}
ты пробовал viewready
?
Ext.create('Ext.grid.Panel', {
// ...
viewConfig: {
listeners: {
viewready: function(view) {
// ...
}
}
}
});
вы можете нажать в магазине load
событие напрямую, или передать событие через сетку.
внутри класса grid, вероятно, в initComponent
функция, поставьте следующее,
this.relayEvents(this.getStore(), [ 'load' ]);
Если вы используете setTimeout
функция это заставит вызов произойти после завершения рендеринга, он работал в аналогичном случае, я должен был ваш.
listeners: {
'afterrender': function(grid) {
setTimeout(function(){
// ...
Я понимаю, что это старый вопрос, но недавно мне пришлось исправить проблему прокрутки в старом приложении ExtJS (4.0.2), и мне нужен триггер/событие, когда html (например, тег
используйте свойство success: в getForm ().load () для вызова функции для обработки post load processing
viewready
работал на меня !!!
настроено, как показано ниже в контроллере:
Ext.define('App.controller.Dashboard', {
extend: 'Ext.app.Controller',
init: function() {
this.control({
'#summary-bottom-grid': {
viewready: function(cmp){
var link = Ext.DomQuery.selectNode('span.summary-status',cmp.body.dom);
}
}
});
}
}
Я использую extjs 4.2.3, и это сработало.
я использовал этот:
this.grid = Ext.create('Ext.grid.Panel',{
store: this.ds,
margins: '0 0 0 10', // top right button left
title: lng.menu.caption.mailHeaderGrid,
selType: 'checkboxmodel',
columns:[...],
selModel: {
renderer: function(value, metaData, record, rowIndex, colIndex, store, view) {
var baseCSSPrefix = Ext.baseCSSPrefix;
metaData.tdCls = baseCSSPrefix + 'grid-cell-special ' + baseCSSPrefix + 'grid-cell-row-checker';
return (record.get('status') =='lng.label.surveyFinalized') ? '' : '<div class="' + baseCSSPrefix + 'grid-row-checker"> </div>';
},
},
для меня работает на chrome!