我无法理解EXTJS 3.4中PagingMemoryProxy的行为。 一个。它的定义如下:
proxy:new Ext.ux.data.PagingMemoryProxy(jsonData),
listeners : {
load : {
scope : this,
fn : function(actorStore) {
var r = actorStore.getRange();
var modified = actorStore.getModifiedRecords();
for ( var i = 0; i < modified.length; i++) {
for (j = 0; j < r.length; j++) {
if (r[j].get('plannedResourceId') == modified[i].get('plannedResourceId')) {
var changes = modified[i].getChanges();
for (p in changes) {
if (changes.hasOwnProperty(p)) {
r[j].set(p, changes[p]);
}}}}}}}}
所以,我遇到的问题是当我使用:
删除一行时gridPanelToRefresh.getStore().removeAt(value.value.rowIndex);
执行上述任务后,当我点击当时的刷新按钮时,删除的数据也会进入网格。我的意思是使用上面提到的代理创建的商店没有刷新。
请您为此提出一些解决方案。我得到的一个领先是getModifiedRecords()没有得到删除的记录。
答案 0 :(得分:0)
处理上述查询时最好的方法是。 我在处理这个问题时得到了以下几点。
一个。问题不在于Paging Memory。因为它完美地完成了它的任务。有一点需要注意的是,每当我们删除当时最重要的属性时,即 - modifiedRecords,脏永远不会改变,所以这就是为什么我的分页工具栏没有得到更新json的原因:
var modified = actorStore.getModifiedRecords();
因此,getmodifiedRecords()根本不返回任何内容。
实现方法 - 当我加载我的JSONdata时,我将它存储在Global范围内,然后使用splice更新该JSON,然后在执行删除事件时将其上传到存储。
for (var i = 0; i < (jsonData.total); i++) {
if(i == indexForRemoval) {
jsonData.data.splice(indexForRemoval,1);
}
}
jsonData.total = ((jsonData.total) - 1);
希望这有帮助。