Ext JS 4.0.7 で PagingMemoryProxy を持つストアを持つグリッドを作成しようとしています。ストア内の情報を編集できるようにしたいのですが、情報を編集して次のページに移動すると、前のページで編集した情報が失われてしまいます。私のコードは次のとおりです。
Ext.Loader.setConfig({
enabled: true
});
Ext.Loader.setPath('Ext.ux', 'examples/ux');
Ext.require('Ext.ux.data.PagingMemoryProxy');
Ext.onReady(function() {
var data = [
{name: 'jack johnson', text: 'record1'},
{name: 'jack johnson', text: 'record2'},
{name: 'jack johnson', text: 'record3'},
{name: 'jack johnson', text: 'record4'}
];
var store = Ext.create('Ext.data.Store', {
fields: ['name', 'text'],
data: data,
proxy: {
type: 'pagingmemory'
},
pageSize: 2
});
var grid = Ext.create('Ext.grid.Panel', {
store: store,
region: 'center',
id: 'thegrid',
plugins: [{
ptype: 'cellediting',
clicksToEdit: 1,
listeners: {
edit: function(editor, e) {
//e.record.commit();
}
}
}],
columns: [{
text: 'Name',
dataIndex: 'name',
editor: {
allowBlank: false
}
}, {
text: 'Text',
dataIndex: 'text'
}],
dockedItems: [{
xtype: 'pagingtoolbar',
store: store,
dock: 'bottom',
displayInfo: true
}],
});
Ext.create('Ext.Viewport', {
layout: 'border',
items: [grid]
});
});
ストアのデータには実際にレコードが含まれているのに対し、プロキシのデータにはレコードのデータが含まれているため、ストアのデータをプロキシのデータと同期する方法を考えていたので、プロキシで ID でレコードを見つけることは不可能です。同期方法を試してみることにしました。
同期メソッドを使用した後、何も起こらないように見えたので、レコードをコミットする必要があるのではないかと考えました...したがって、コメントアウトされたe.record.commit
コードです。それでも何も起こらなかったとき、私は Firebug を掘り下げ始め、最終的にme.getNewRecords
コードの ext-all-debug で 44,600 行を見ました。toCreate
これにより、最終的にコミットされていないレコードのみが返されるようになりました (明らかにレコードのファントム プロパティをチェックするため)。したがって、編集したレコードは44,600 行目の変数に含まれません。
e.record.commit を取り出したとき、toCreate 変数には編集されたレコードが含まれるようになりましたが、これで問題が解決することはありませんでした。
私の質問は、ストアを PagingMemoryProxy と同期するにはどうすればよいですか? 出来ますか?もしそうなら、私は何をしますか?
どんな助けでも大歓迎です!