2013-11-07 5 views
1

Я не могу понять поведение PagingMemoryProxy в EXTJS 3.4. a. Она определяется следующим образом:Прокси-сервер PagingMemory не обновляется при обновлении магазина с помощью removeAt (rowindex)

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

Наилучший возможный подход при работе с вышеуказанным запросом. Последующие моменты, которые я получил, столкнувшись с проблемой.

a. Проблема была не в Пейджинговой памяти вообще. Потому что он выполняет свою задачу отлично. Одно замечание в этом случае - всякий раз, когда мы удаляем запись в то время, наиболее важные свойства - modifiedRecords, dirty никогда не изменялись, поэтому именно поэтому моя панель поискового вызова не обновлялась json, поскольку она использует:

var modified = actorStore.getModifiedRecords(); 

В результате getmodifiedRecords() ничего не возвращает.

Подход к внедрению - когда загружается моя JSONdata, я храню его в глобальной области и затем обновляю этот JSON с помощью сплайсинга, а затем загружаю его в хранилище всякий раз, когда выполняется событие удаления.

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

Надеюсь, это поможет.

 Смежные вопросы

  • Нет связанных вопросов^_^