Подскажите пожалуйста. Решил сделать список товара и корзину при помощи двух 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'));
}
}
}