在ExtJS 4.0 GridPanel上将CellEditing与复选框选择模型结合使用时,没有方法getEditor()错误

时间:2011-12-15 18:49:44

标签: extjs4

即时通讯使用extjs 4.0并尝试将可编辑网格与复选框选择模型相结合。 问题是,当我点击复选框时,我收到此错误消息

Uncaught TypeError: Object [object Object] has no method 'getEditor'

我清楚地知道复选框列不应该被编辑(以cellediting插件方式),所以没有getEditor函数。

我尝试在CellEditing组件上定义一个beforeedit侦听器,该组件跳过colIdx = 0的版本,但它甚至没有被调用,因为错误发生在startEditByClick方法之前。

所以,我的问题是,我应该:

a)定义一个getEditor NO-OP函数并将其绑定到第一列?我不知道这是否可能

b)在调用startEditByClick函数之前触发的colIdx = 0时定义一个跳过版本的监听器?关于什么组件将是什么事件?

c)忽略javascript错误,只要它有效(:P)

这里是一些代码

var cellEditing = Ext.create('Ext.grid.plugin.CellEditing', {
    clicksToEdit: 1
});

Ext.define('RPV.view.aviso.AvisosList', {
    extend: 'Ext.grid.Panel',
    store: 'AvisosStore',

    selModel: Ext.create('Ext.selection.CheckboxModel'),
    plugins: [cellEditing],

    initComponent: function () {
        this.columns = [{
            header: 'NIV',
            dataIndex: 'niv',
            flex: 1,
            editable: false
        }, {
            header: 'NCI',
            dataIndex: 'nci',
            flex: 1,
            editable: false
        }, {
            header: 'Tipo movimiento',
            dataIndex: 'tipoMovimiento',
            width: 130,
            field: {
                xtype: 'combobox',
                typeAhead: true,
                triggerAction: 'all',
                selectOnTab: true,
                store: 'TipoMovimientoStore',
                lazyRender: true,
                listClass: 'x-combo-list-small',
                mode: 'remote',
                minChars: 0,
                valueField: 'descripcion',
                displayField: 'descripcion',
                emptyText: 'No especificado'
            }
        }, {
            header: 'Observaciones',
            dataIndex: 'observacionesDwr',
            width: 130,
            field: {
                xtype: 'combobox',
                typeAhead: true,
                triggerAction: 'all',
                selectOnTab: true,
                store: 'ObservacionesStore',
                lazyRender: true,
                mode: 'remote',
                minChars: 0,
                valueField: 'descripcion',
                displayField: 'descripcion',
                autoSelect: false
            }
        }];

        this.callParent(arguments);
    }
});

更新:找到此链接http://www.sencha.com/forum/showthread.php?137731-Using-checkbox-selection-model-in-the-editable-grid-produces-an-error&highlight=CellEditing 这说明这是一个错误,已经为版本4.1.0修复了

1 个答案:

答案 0 :(得分:1)

试试这个

onBeforeEditCell : function(event) {        
        if (event.column && event.column.isCheckerHd) {
            return false;
        } 

        return true;
    }

http://www.sencha.com/forum/showthread.php?140253-Ext.grid.plugin.CellEditing-Ext.selection.CheckboxModel-TypeError