我試圖創建一個具有Ext JS 4.0.7中的PagingMemoryProxy存儲的網格。我希望能夠在商店中編輯信息,但是我發現如果編輯信息並轉到下一頁,我會丟失上一頁中的編輯信息。我的代碼如下。Ext JS 4:與其分頁內存代理同步存儲
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中進行挖掘並最終在44600行上查看了ext-all-debug me.getNewRecords
代碼。這最終導致我只返回未提交的記錄(因爲它顯然檢查記錄的幻像屬性),因此,我編輯的任何記錄都不會包含在行44,600的toCreate
變量中。
當我拿出e.record.commit時,toCreate變量現在包含已編輯的記錄,但這些都沒有幫助解決我的問題......只是初步探索和發現了我。
所以我的問題是,如何與PagingMemoryProxy同步商店?可能嗎?如果是這樣,我該怎麼辦?
任何幫助,將不勝感激!
我確實發現[此線程](http://gwt-ext.com/forum/viewtopic.php?f=7&t=3511)提到使用兩個商店,但我覺得這有點浪費... – incutonez 2012-07-19 16:15:55