当我尝试使用 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 问题。
首先,我使用的是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 问题。