Показать сообщение отдельно
  #1 (permalink)  
Старый 30.08.2012, 11:09
Новичок на форуме
Отправить личное сообщение для korish Посмотреть профиль Найти все сообщения от korish
 
Регистрация: 30.08.2012
Сообщений: 2

Корзина Gridpanel
Подскажите пожалуйста. Решил сделать список товара и корзину при помощи двух Grid'ов.
Вот так передаю в Grid(корзину) все параметры

stores.add({product_id: pi, name: n, price: p, unit: u, quantity: q, summary: p*q});


Сам Grid(корзина) выглядит так

Ext.define('Cart', {
        extend: 'Ext.data.Model',
        fields: [
           {name: 'product_id', type: 'int'},
           {name: 'name'},
           {name: 'price'},
           {name: 'unit'},
           {name: 'quantity'},
           {name: 'summary'}
        ],
        idProperty: 'product_id'
    });
 
var stores = Ext.create('Ext.data.ArrayStore', {
        model: 'Cart',
    });
 
    var cart = Ext.create('Ext.grid.Panel', {
        store: stores,
        stateful: true,
        stateId: 'cartGrid',
        columns: [
            {
                text     : 'Код',
                width    : 75,
                sortable : true,
                dataIndex: 'product_id'
            },
            {
                text     : 'Наименование',
                flex     : 1,
                sortable : false,
                dataIndex: 'name'
            },
            {
                text     : 'Количество',
                width    : 75,
                sortable : true,
                dataIndex: 'quantity',
                editable : true
            },
            {
                text     : 'Ед.изм',
                width    : 75,
                sortable : true,
                renderer : change,
                dataIndex: 'unit'
            },
            {
                text     : 'Цена',
                width    : 75,
                sortable : true,
                renderer : 'usMoney',
                dataIndex: 'price'
            },
            {
                text     : 'Сумма',
                width    : 85,
                sortable : true,
                renderer : 'usMoney',
                dataIndex: 'summary',
                }  
            }



Возможно, это неправильное решение но работает . Вопрос стал такой когда добавляю одинаковый товар он создается как дополнительная строка. Подскажите как сделать так что бы товар не создавал новую строку, а приплюсовывался в уже добавленный товар?

Пробовал вот такую функцию сделать, но не смог изменить значение в гриде

if (cart.getStore().data.length == 0) {
                    stores.add({product_id: pi, name: n, price: p, unit: u, quantity: q, summary: p*q});
                    alert('==0');
                }
                else {
                    for (var i = 0; i < cart.getStore().data.length; i++) { 
                        var rec = stores.getAt(i);
                            if (rec.get('product_id') != pi){
                                stores.add({product_id: pi, name: n, price: p, unit: u, quantity: q, summary: p*q});
                            } else {
                                alert(rec.get('product_id'));
                            }
                    }
                }
Ответить с цитированием