对于extjs版本6.2+,会发生这种情况。我有一个cellediting插件,在编辑时有一个监听器事件。当调用onEdit时,我试图检查已编辑单元格的xtype,但由于活动列作为空值传递,因此失败。这适用于早期版本。根据研究,这可能是一个从未在extjs版本中修复的错误,并且还没有看到任何解决方法。如果有人遇到这个,请告知。
问题:在cellediting上,editor.activecolumn为null。它适用于早期版本。看起来ExtJs 6.2 CellEditing插件editor.el.dom总是传递null。
面板布局:
hideHeaders: false,
sortableColumns: false,
rowLines: true,
collapsible: false,
titleCollapse: true,
layout: 'auto',
title: 'Test Page',
selModel: 'cellmodel',
plugins: {
ptype: 'cellediting',
clicksToEdit: 1,
listeners: {
beforeedit: 'isEditable',
edit: 'onEdit'
}
}
上面的代码将触发onEdit,下面是函数:
onEdit: function(editor, c, e) {
// combobox check
if (editor.activeColumn.config.editor.xtype === 'combo') {
console.log("it's combo");
}
}
答案 0 :(得分:0)
实际上,从ExtJS 6.2开始,activeColumn
上的编辑器对象不再提供edit
属性。但是你不应该首先依赖它,因为它没有记录,还有其他方法可以达到你想要的效果。
查看传递给edit
事件侦听器的context(第二个参数)。除此之外,它还具有column
属性,这正是您所需要的。所以在你的情况下,你可以替换
onEdit: function(editor, c, e) {
if (editor.activeColumn.config.editor.xtype === 'combo') {
console.log("it's combo");
}
}
与
onEdit: function(editor, context) {
if (context.column.config.editor.xtype === 'combo') {
console.log("it's combo");
}
}
它将适用于所有版本的ExtJS 6。