您好我已经收到此错误消息一段时间了,我想知道我错过了什么。提前谢谢。
这是模型:
Ext.define('Recepcion',{
extend: 'Ext.data.Model',
fields: [
{name: 'obra_social_id', type: 'string'},
(... etc)
]
});
这是商店:
//the first line is the array supposed to contain the data?
var datosPlanillaRecepcion = [];
var storePlanillaRecepcion = Ext.create('Ext.data.Store', {
model: 'Recepcion',
data: datosPlanillaRecepcion,
proxy: { type: 'memory'},
autoSync:true
});
最后网格绑定到商店
planillaRecepcionGrid = Ext.create('Ext.grid.Panel', {
id:'gridRecepcion',
store: storePlanillaRecepcion,
flex:0.7,
height:600,
autoScroll:true,
selType: 'cellmodel',
plugins: [cellEditing],
columns: [
columnaOS = Ext.create('Ext.grid.column.Column', {
text : 'Obra Social',
flex : 0.5,
sortable : false,
dataIndex: 'obra_social',
renderer: function(value){
//return pasarMayusculas(value);
return value;
},
editor: {
allowblank: false
//clicksToEdit : 1
}
}),
columnaTotal = Ext.create('Ext.grid.column.Column',{
text : 'Total',
flex : 0.2,
sortable : false,
dataIndex: 'obra_social_recepcion_cantidad_total',
value : ' ',
editor: {
type:'numberfield',
allowblank: false,
minValue: 0,
maxValue: 1000000
},
renderer: function(value){
if (value==0)
return '';
else
return value;
},
listeners:{
validateedit: function(){
return true;
}
}
}),
(...)
{
xtype: 'actioncolumn',
width: 50,
items: [{
tooltip: 'remove',
handler: function(grid, rowIndex, colIndex) {
var rec = grid.getStore().getAt(rowIndex);
grid.getStore().remove(rec);
}
}]
}],
viewConfig: {
stripeRows: false,
border: 25,
markDirty:false,
listeners: listenersGridRecepciones
}
});
如您所见,我使用Cell Editing Plug-in用数据填充网格。 我通过以编程方式将行添加到网格中来实现此目的
grid.getStore()添加({});
添加emtpy对象并使用上面提到的插件编辑它们
事情就是当我点击动作栏时它会抛出
'o is undefined'错误,并且行号指向以下函数
getKey : function(o){
return o.id;
},
顺便说一句,它属于Ext.util.AbstractMixedCollection
它能成为什么?,我知道! “这是一个痛苦的屁股”问题,但也许我错过了一些非常简单的事情
谢谢!
答案 0 :(得分:1)
要使add
方法适用于您的商店,您必须为Model
中定义的每个字段指定默认值。
例如......
grid.getStore().add(
{ obra_social_id: 'id', anotherField: 'fieldVal' ... }
);
答案 1 :(得分:1)
如何修复
This is a bug, just place the null check by replace code in MixedCollection
getKey : function(o){
if(o)
return o.id;
else
return null;
}
thanks,
Kamal A. Siddiqui
Sr. Software Engineer (ACIT)