Сначала я подумал, что это простая проблема, но я все равно не смог ее решить.Extjs mvc добавить запись в панель сетки
У меня есть сетка extjs, ее магазин и модель. Из контроллера я могу вставить новые записи для хранения, когда я использую firebug и debug, я могу перечислить все новые записи в магазине (panel.store.data.items), однако в gridview я не могу сделать его видимым.
Не могли бы вы рассказать мне, где и что мне не хватает? Почему записи не указаны в сетке?
Это моя модель
Ext.define('BOM.model.PaketModel', {
extend: 'Ext.data.Model',
fields: [
{ name: 'seriNo', type: 'string' },
{ name: 'tutar', type: 'string' },
]
});
Это магазин
Ext.define('BOM.store.PaketStore', {
extend: 'Ext.data.Store',
model: 'BOM.model.PaketModel',
proxy: {
type: 'memory',
reader: {
type: 'json',
root: 'data',
},
writer: {
type: 'json',
root: 'data',
},
},
});
Это метод, который я добавлять новые строки
addNew: function() {
this.getPaketWindow().returnRowEdit().cancelEdit();
this.getPaketWindow().getStore().insert(0, new BOM.model.PaketModel());
this.getPaketWindow().returnRowEdit().startEdit(0, 0);
}
UPDATE VIEW
Ext.define('BOM.view.PaketCreate', {
extend: 'Ext.grid.Panel',
alias: 'widget.paketcreate',
bodyPadding: 5,
layout: 'fit',
header:false,
initComponent: function() {
this.columns = [
{ text: 'Seri No', flex: 2, sortable: true, dataIndex: 'seriNo', field: {xtype: 'textfield'} },
{ text: 'Tutar', flex: 2, sortable: true, dataIndex: 'tutar', field: {xtype: 'textfield'} }
];
this.dockedItems = [{
xtype: 'toolbar',
items: [{
text: 'Ekle',
id:'addNewCheck',
iconCls: 'icon-add',
},'-',{
id: 'deleteCheck',
text: 'Sil',
iconCls: 'icon-delete',
disabled: true,
}]
}];
this.store = 'BOM.store.PaketStore';
rowEditing = Ext.create('Ext.grid.plugin.RowEditing', {
clicksToMoveEditor: 1,
autoCancel: false
});
this.plugins = rowEditing,
this.callParent(arguments);
},
returnRowEdit: function() {
console.log("row editing...");
return rowEditing;
}
});
var rowEditing;
вы можете добавить код 'view'? –
Я обновил код просмотра – tkcn
Я нашел проблему, но у меня нет объяснений. this.getPaketWindow() возвращает представление, и я мог получить доступ к хранилищу с помощью this.getPaketWindow(). getStore(). Однако this.getPaketWindow(). GetView(). GetStore(). Insert (0, new ...) просто сработал. Зачем нам getView(), почему существуют два разных магазина? – tkcn