1

我无法理解 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() 没有获取已删除的记录。

4

1 回答 1

0

处理上述查询时最好的方法是。我在处理这个问题时遇到了以下几点。

一个。问题根本不在于分页内存。因为它完美地完成了它的任务。需要注意的一件事是,每当我们删除一条记录时,最重要的属性,即 modifiedRecords、dirty永远不会改变,这就是为什么我的分页工具栏在使用时没有更新 json 的原因:

  var modified = actorStore.getModifiedRecords();

结果,getmodifiedRecords() 什么也不返回。

实施方法 - 当我的 JSONdata 被加载时,我将其存储在全局范围内,然后使用 splice 更新该 JSON,然后在执行删除事件时将其上传到商店。

  for (var i = 0; i < (jsonData.total); i++) {
        if(i == indexForRemoval) {
           jsonData.data.splice(indexForRemoval,1);
        }
    }
          jsonData.total = ((jsonData.total) - 1);

希望这可以帮助。

于 2013-11-20T06:34:40.883 回答