не удается удалить внешние данные.Хранить записи с помощью плагина редактирования ячеек

#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] — Сетка: проблемы с редактированием ячеек, разрушающие