首先,我使用的是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”返回为空。
只是为了强制执行,当我从编辑器中删除所有组合框时,它会起作用。
这也仅适用于新记录。