d'abord je pensais que c'est un problème simple mais je ne pouvais pas le résoudre de toute façon.Extjs mvc ajouter un enregistrement au panneau de la grille
J'ai un panneau de grille extjs, son magasin et son modèle. Depuis le contrôleur, je peux insérer de nouveaux enregistrements à stocker, quand j'utilise firebug et debug, je peux lister tous les nouveaux enregistrements dans le magasin (panel.store.data.items) mais dans la grille, je ne peux pas le rendre visible.
Pourriez-vous me dire où et ce qui me manque? Pourquoi les enregistrements ne sont pas répertoriés dans la grille?
Ceci est mon modèle
Ext.define('BOM.model.PaketModel', {
extend: 'Ext.data.Model',
fields: [
{ name: 'seriNo', type: 'string' },
{ name: 'tutar', type: 'string' },
]
});
C'est le magasin
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',
},
},
});
Ceci est la méthode que j'ajouter de nouvelles lignes
addNew: function() {
this.getPaketWindow().returnRowEdit().cancelEdit();
this.getPaketWindow().getStore().insert(0, new BOM.model.PaketModel());
this.getPaketWindow().returnRowEdit().startEdit(0, 0);
}
MISE À JOUR 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;
pouvez-vous ajouter le code 'view'? –
J'ai mis à jour avec le code de vue – tkcn
J'ai trouvé le problème mais je n'ai aucune explication. this.getPaketWindow() retourne la vue et je pourrais accéder au magasin avec this.getPaketWindow(). getStore(). Cependant, this.getPaketWindow(). GetView(). GetStore(). Insert (0, new ...) vient de fonctionner. Pourquoi avons-nous besoin de getView() pourquoi existe-t-il deux magasins différents? – tkcn