невозможно удалить записи Ext.data.Store с помощью плагина редактирования ячеек - PullRequest
2 голосов
/ 08 ноября 2011

Привет, я уже некоторое время получаю это сообщение об ошибке, и я хотел бы знать, что мне не хватает. Заранее спасибо.

Это модель:

 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 () добавить ({});

добавление объектов emtpy и редактирование их с помощью упомянутого плагина

Дело в том, что когда я нажимаю на столбец действия, он выдает мне

Ошибка 'o is undefined' и номер строки, указывающий на следующую функцию

getKey : function(o){
   return o.id;
}, 

который, кстати, принадлежит Ext.util.AbstractMixedCollection

что это может быть?, Я знаю! вопрос "это боль в заднице", но, возможно, я упускаю что-то действительно простое

Спасибо!

Ответы [ 3 ]

1 голос
/ 24 мая 2012

как исправить

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)
1 голос
/ 17 ноября 2011

Чтобы метод add работал в вашем магазине, вы должны указать значение по умолчанию для каждого поля, как определено в Model.

Например ...

grid.getStore().add(
 { obra_social_id: 'id', anotherField: 'fieldVal' ... }
);
0 голосов
/ 04 января 2012

решения не было, это была ошибка, из-за которой я потерял много дней в версии 4.0.1, она была исправлена ​​

[EXTJSIV-1762] - Сетка: проблемы CellEditing, уничтожающие

...