gpt4 book ai didi

pagination - Ext JS 4:将存储与其分页内存代理同步

转载 作者:行者123 更新时间:2023-12-02 03:58:37 27 4
gpt4 key购买 nike

我正在尝试创建一个网格,该网格在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查找记录。我决定尝试使用sync方法。

使用sync方法后,似乎什么都没发生,所以我想也许我应该提交记录...因此注释掉了 e.record.commit代码。当那什么都没做时,我开始在Firebug中进行挖掘,并最终在第44,600行上看到ext-all-debug me.getNewRecords代码。最终,这导致我只返回未提交的记录(因为它显然检查了记录的phantom属性),因此,我编辑的任何记录都不会包含在第44,600行的 toCreate变量中。

当我取出e.record.commit时,toCreate变量现在包含已编辑的记录,但是这些都无助于解决我的问题...只是初步了解和发现了什么。

所以我的问题是,一个商店如何与PagingMemoryProxy同步?可能吗?如果是这样,我该怎么办?

任何帮助,将不胜感激!

最佳答案

通过遍历最终添加到PagingMemoryProxy的JSON数据解决了该问题...基本上为JSON中的每个记录添加了一个“索引”值,因此当我要编辑存储中的记录时,我可以轻松地将其索引到通过使用此索引值其PagingMemoryProxy。简单修复。

关于pagination - Ext JS 4:将存储与其分页内存代理同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11462031/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com