当我尝试使用 extjs 网格编辑器插入新记录时,无法读取 属性 'mergeAttributes' of null 错误

Can not read property 'mergeAttributes' of null error when I try to insert new records using extjs grid editor

首先,我使用的是6.2版本的extjs框架

我在使用带有 "Ext.grid.plugin.RowEditing" 插件的 ext.js 网格保存新记录时遇到问题。

当我尝试保存记录时,由于该行在编辑器中没有组合框,所以它工作正常。

但是,当我在行编辑器中添加组合框时,出现以下错误:

Can not read property 'mergeAttributes' of null

通过检查extjs框架代码,我发现错误发生在编辑器退出和正在用修改后的内容填充该行时。

这发生在 Table.js 文件的以下部分:

    cellSelector = me.getCellSelector(column);
    oldCell = oldRow.selectNode(cellSelector);
    newCell = newRow.selectNode(cellSelector);

    // Copy new cell attributes across. Use IE-specific method if possible.
    if (oldCell.mergeAttributes) {
        oldCell.mergeAttributes(newCell, true);
    } else {
        newAttrs = newCell.attributes;
        attLen = newAttrs.length;
        for (attrIndex = 0; attrIndex < attLen; attrIndex++) {
            attName = newAttrs[attrIndex].name;
            if (attName !== 'id') {
                oldCell.setAttribute(attName, newAttrs[attrIndex].value);
            }
        }
    }

基本上,变量 "oldCell" 没有被 "oldRow.selectNode (cellSelector)" 填充。

在第一列中,我放置了一个包含记录 ID 的不可见列。此单元格正在填充,但是,任何其他单元格,无论是否具有组合框,都将 "oldCell" 返回为 null。

只是为了强制执行,当我从编辑器中删除所有组合框时它起作用了。

只有新记录也是如此。

幸运的是这个错误很容易修复。

我在放置组合框的列中有一个 "render"。

此渲染中出现未处理的错误。所以,我纠正了它,错误消失了。

@André Cristino:我相信它是列中的渲染器而不是渲染器。 基本上,两者是不同的。

创建组件时使用渲染术语。
渲染器是一种用于更改网格单元格中数据的模板。

虽然我在渲染器中没有任何错误,但我仍然面临 mergeAttributes 问题。