嵌套网格中的 ExtJS 错误:无法读取 null 的属性“isGroupHeader”

Posted

技术标签:

【中文标题】嵌套网格中的 ExtJS 错误:无法读取 null 的属性“isGroupHeader”【英文标题】:ExtJS error in nested grids : Cannot read property 'isGroupHeader' of null 【发布时间】:2015-04-18 13:17:56 【问题描述】:

每当我在嵌套网格中展开或折叠行时,我都会收到以下错误:

“未捕获的类型错误:无法读取 null 的属性 'isGroupHeader'”

google 给了我这个 url,但它似乎在 5.1 中不起作用,知道如何转换它来解决 5.1 问题吗?

http://blog.kondratev.pro/2014/08/getting-rid-of-annoying-uncaught.html

这是错误的小提琴示例: https://fiddle.sencha.com/#fiddle/g5b

【问题讨论】:

【参考方案1】:

这是因为网格单元格或单元格编辑器事件(鼠标悬停、单击或其他)在另一个网格(父级或祖先)的上下文中触发。在这里您可以看到如何阻止事件冒泡:

Ext.require(['Nested.view.NestedGrid'], function() 
    var nGrid = Ext.create(
        type: 'nestedgrid',
        renderTo: div
    );

    // prevent bubbling of the events
    nGrid.getEl().swallowEvent([
        'mousedown', 'mouseup', 'click',
        'contextmenu', 'mouseover', 'mouseout',
        'dblclick', 'mousemove'
    ]);

);

【讨论】:

【参考方案2】:
Ext.define('MyApp.overrides.GridColumn', 
    override: 'Ext.grid.column.Column',

    show: function () 
        if (!this.getRefOwner()) 
            return;
        
        this.callParent(arguments);
    
);

这是我正在使用的解决方法。

【讨论】:

【参考方案3】:

找到ext-all-debug.js源码错误方法,然后在加载后新建一个js到“ext-all *.js”位置,我的版本是:Ext JS 6.2.0.981

核心代码为:Object.prototype.function 和xxx != null

后缀代码:

Ext.event.publisher.Dom.prototype.unsubscribe = function (element, eventName, delegated, capture) 
    var me = this,
        captureSubscribers, bubbleSubscribers, subscribers, id;
    if (delegated && !me.directEvents[eventName]) 
        captureSubscribers = me.captureSubscribers;
        bubbleSubscribers = me.bubbleSubscribers;
        subscribers = capture ? captureSubscribers : bubbleSubscribers;
        if (subscribers != null && subscribers[eventName]) 
            --subscribers[eventName];
        
        if (me != null && bubbleSubscribers != null && captureSubscribers != null && !me.handles[eventName] && !bubbleSubscribers[eventName] && !captureSubscribers[eventName]) 
            // decremented subscribers back to 0 - and the event is not in "handledEvents"
            // no longer need to listen at the dom level
            this.removeDelegatedListener(eventName);
        
     else 
        subscribers = capture ? me.directCaptureSubscribers : me.directSubscribers;
        id = element.id;
        subscribers = subscribers[eventName];
        if (subscribers[id]) 
            --subscribers[id];
        
        if (!subscribers[id]) 
            // no more direct subscribers for this element/id/capture, so we can safely
            // remove the dom listener
            delete subscribers[id];
            me.removeDirectListener(eventName, element, capture);
        
    
;

【讨论】:

以上是关于嵌套网格中的 ExtJS 错误:无法读取 null 的属性“isGroupHeader”的主要内容,如果未能解决你的问题,请参考以下文章

在 ExtJS4 TreeGrid 中加载嵌套的 JSON 数据

如何为嵌套在 ExtJs 表单内的网格分组列标题

类型错误:无法在嵌套列表视图中读取 null 的属性“newdaycalendar”,其中 listmodel 动态创建了 qml

Extjs - 在属性网格中显示嵌套对象

EXTJS 4 嵌套 json 数组数据到网格面板

extjs5 嵌套网格(表:子表)