即时通讯使用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修复了
答案 0 :(得分:1)
试试这个
onBeforeEditCell : function(event) {
if (event.column && event.column.isCheckerHd) {
return false;
}
return true;
}