2012-07-31 4 views
0

я имею ExtJS GridPanelextjs сетка реальное полное afterrender событие?

, когда я загружаю магазин:

I do Ext.getBody().mask(); 

Grid 'afterrender' event fires first 

Store 'load' event fires second 

I attached unmask function to store load 'event' 

но есть несколько моментов, после этого события, , когда я вижу белую сетку (между разоблачить и ряды заселяющих).

Каков наилучший способ разоблачить реальное полное событие afterrender? Я имею в виду - когда все строки отображаются.

Благодаря

ответ

3

Я собирался предложить loadMask конфигурации в GridView как покрыты here в документации. Но я заметил, что это почему-то не работает для меня.

Если это не сработает для вас, просто используйте событие gridview's refresh как покрыто here. Он будет срабатывать только после полной загрузки данных в сетку. Вы можете прикрепить его через viewConfig конфигурации вашего GridPanel как так:

Ext.create('Ext.grid.Panel', { 
    title: 'My Grid Panel', 
    // ... other grid panel configs 
    viewConfig: { 
     listeners: { 
      refresh: function(gridview) { 
       console.log(gridview); 
       console.log('is fully loaded'); 
      } 
     } 
    }, 
}); 

Или, если вы используете MVC приложение архитектуры:

Ext.define('MyApp.controller.MyController', { 
    extend: 'Ext.app.Controller', 

    models: ['MyModel'], 

    stores: ['MyStore'], 

    views: ['MyGridPanel'], 

    init: function() { 
     var me = this; 

     me.control({ 

      // ... other event handlers 

      'mygridpanel > gridview': { 

       refresh: function(gridview) { 
        console.log(gridview); 
        console.log('is fully loaded'); 
       } 

      }, 
     }); 
    } 
}); 
+0

спасибо. похоже, что это помогло! –

+0

немного поздно, но мне просто пришлось бороться с подобной проблемой. в Extjs 3.4 Я мог бы работать с событием сетки 'viewready'. –

Смежные вопросы