1

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

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

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

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

无法读取 null 的属性“mergeAttributes”

通过检查 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”返回为空。

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

这也仅适用于新记录。

4

2 回答 2

0

幸运的是,该错误很容易修复。

我在放置组合框的列中有一个“渲染”。

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

于 2017-04-10T22:39:28.967 回答
0

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

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

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

于 2018-03-09T07:15:10.180 回答