#extjs #extjs4 #store
#extjs #extjs4 #Магазин
Вопрос:
Привет, я уже некоторое время получаю это сообщение об ошибке, и я хотел бы знать, чего мне не хватает. Заранее спасибо.
Это модель:
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
}
});
как вы видите, я использую плагин редактирования ячеек для заполнения таблицы данными.
Я делаю это, программно добавляя строки в сетку таким образом
grid.getStore().add({});
добавление объектов emtpy и их редактирование с помощью упомянутого плагина
дело в том, что когда я нажимаю на столбец action, он выдает мне
ошибка «o не определено» и номер строки, указывающий на следующую функцию
getKey : function(o){
return o.id;
},
который, кстати, принадлежит Ext.util.AbstractMixedCollection
что это может быть?, я знаю! вопрос «это заноза в заднице», но, возможно, я упускаю что-то действительно простое
Спасибо!
Комментарии:
1. что такое стек вызовов? Какая строка в предоставленном вами коде вызывает эту функцию «getKey»?
2. Это ваша пустая запись, определите idProperty в вашей модели, а затем добавьте с этим, вот так:
grid.getStore().add({id:xxx});
Ответ №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)
Ответ №2:
Чтобы add
метод работал в вашем хранилище, вы должны указать значение по умолчанию для каждого поля, как определено в вашем Model
.
Например…
grid.getStore().add(
{ obra_social_id: 'id', anotherField: 'fieldVal' ... }
);
Ответ №3:
решения не было, это была ошибка, из-за которой я потерял много дней, в версии 4.0.1 она была исправлена
[EXTJSIV-1762] — Сетка: проблемы с редактированием ячеек, разрушающие