extjs cellediting事件将activecolumn传递为null

时间:2017-09-11 19:51:51

标签: javascript extjs plugins extjs6.2

对于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");
    }
}

1 个答案:

答案 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。