【问题标题】:extjs grid real full afterrender event?extjs 网格真正完整的后渲染事件?
【发布时间】:2026-01-26 17:25:02
【问题描述】:

我有 extjs GridPanel

当我加载商店时:

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

Grid 'afterrender' event fires first

Store 'load' event fires second

I attached unmask function to  store load 'event'

但是在那次事件之后不久, 当我看到白色网格(在取消掩码和填充行之间)时。

在真正的完整后渲染事件中揭露的正确方法是什么? 我的意思是 - 当所有行都被渲染时。

谢谢

【问题讨论】:

    标签: javascript events extjs grid


    【解决方案1】:

    我将建议 gridview 的 loadMask 配置在文档中覆盖 here。但我注意到由于某种原因它对我不起作用。

    如果它对您也不起作用,只需使用 gridview 的 refresh 事件here。它只会在数据完全加载到网格后触发。您可以通过网格面板的 viewConfig 配置附加它,如下所示:

    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');
                    }
    
                },
            });
        }
    });
    

    【讨论】:

    • 有点晚了,但我不得不为类似的问题而苦苦挣扎。在 Extjs 3.4 中,我可以使用网格事件 viewready