2015-02-05 19 views
0

我使用ExtJs 4版本,我創建了客戶端分頁。當我在第二頁中搜索網格時,它不是從網格的第一頁搜索商店。這是view.jsExtjs分頁格沒有過濾沒有存儲的第一頁,loadPage(1)

{ 
    xtype: 'textfield', 
    id: 'detailsSearchBox', 
    selectOnFocus: true, 
    margin:'0 0 0 10', 
    mode: 'remote', 
    listeners: { 
      change :function(field, newValue, oldValue, options){ 
        Store.clearFilter(true); 
        var grid = Ext.getCmp('Grid'); 
        var total = localStorage.getItem('total'); 
        var matcher = new RegExp(Ext.String.escapeRegex(newValue), "i"); 
               console.log('grid.store.getCurrentPage ', grid.store.currentPage); 
               var tb = Ext.getCmp('pagingtool'); 
        console.log('window.data ', window.data); 
        records = []; 
        Ext.each(tempClusterData, function(record) { 
        for (var i = 0; i < grid.columns.length; i++) { 
          if (grid.omitColumns) { 
            if (grid.omitColumns.indexOf(grid.columns[i].dataIndex) === -1) { 
              if (matcher.test(record[grid.columns[i].dataIndex]){ 
               if (!grid.filterHidden && grid.columns[i].isHidden()) { 
                 continue; 
               } else { 
                records.push(record); 
                 break; 
               }; 
              }; 
            }; 
           } else { 
                  if (matcher.test(record[grid.columns[i].dataIndex]) { 
                   //console.log('else - if**** ', record[grid.columns[i].dataIndex], matcher); 
                   if (!grid.filterHidden && grid.columns[i].isHidden()) { 
                    continue; 
                   } else { 
                  records.push(record); 
                    window.data= records; 
                    break; 
                   }; 
                  }; 
                 }; 
                } 
               }); 
               data = window.data; 
               data.length=window.data.length; 

               grid.store.load({ params: { query: matcher, start: 0, limit: window.total } }); 
              }, 

             } 
            }  

和我store.js是

var fetchedData = function(){ 
this.data = null; 
this.total = 0; 
} 

var data = JSON.parse(localStorage.getItem('data')); 
var total = localStorage.getItem('total'); 

function createPagination(page, count) { 

    var tmp = []; 
    var startIndex = (page * count) - count; 
    if(startIndex <= data.length-1) 
    { 
     var endIndex = startIndex + (count -1); 
     if(endIndex > data.length -1) 
      endIndex = data.length -1; 
     for(;startIndex <= endIndex;startIndex++) 
     { 
      tmp.push([data[startIndex].Id, data[startIndex].Name, data[startIndex].start, data[startIndex].end, data[startIndex].status, data[startIndex].year); 
     } 
    } 
    return data; 
} 
var store = Ext.define('EMS.store.store', { 
extend: 'Ext.data.Store', 
alias: 'store.ctore', 
model: 'EMS.model.cModel', 
requires: [ 
    'EMS.model.cModel' 
], 
//autoLoad: true, 
pageSize : 3, 
proxy: { 
     type: 'memory', 
     reader: { 
      type: 'array', 
      root: 'data', 
      totalProperty : 'total' 
     } 
}, 
listeners : { 
     beforeload : function(store, operation, eOpts){ 
      var page = operation.page; 
      var limit = operation.limit; 
      fetchedData.data = createPagination(page, limit); 
      fetchedData.total = total; 
      store.proxy.data = fetchedData; 
     } 
} 

}); 
+0

'winndow.data'和'window.total'是商店的變量 – Learner

回答

0

我找到了原因,我的問題在這裏是我在for循環變化的代碼。只要看到其他塊的註釋行。

records = []; 
Ext.each(cData, function(record) { 
for (var i = 0; i < grid.columns.length; i++) { 
    if (grid.omitColumns) { 
     if (grid.omitColumns.indexOf(grid.columns[i].dataIndex) === -1) { 
      if (matcher.test(record[grid.columns[i].dataIndex]){ 
       if (!grid.filterHidden && grid.columns[i].isHidden()) { 
        continue; 
       } else { 
        records.push(record); 
        break; 

       }; 
      }; 
     }; 
    } else { 
     if (matcher.test(record[grid.columns[i].dataIndex]){ 
      if (!grid.filterHidden && grid.columns[i].isHidden()) { 
       continue; 
      } else { 
       records.push(record); 
       break; 
      }; 
      }else{ 
       window.data.pop(); // I have added this line so it is working now 
      } 
    }; 
} 
}); 
window.data= records; 
window.data.length= records.length; 
grid.store.load({ params: {start: 0, limit: window.total } }); 
0

如果您想根據商店中可用的匹配記錄數來更改分頁工具欄顯示消息。

records = []; 
var pbt = Ext.getCmp('pagingtoolbar'); 
Ext.each(cData, function(record) { 
for (var i = 0; i < grid.columns.length; i++) { 
    if (grid.omitColumns) { 
     if (grid.omitColumns.indexOf(grid.columns[i].dataIndex) === -1) { 
      if (matcher.test(record[grid.columns[i].dataIndex]){ 
       if (!grid.filterHidden && grid.columns[i].isHidden()) { 
        continue; 
       } else { 
        records.push(record); 
        break; 

       }; 
      }; 
     }; 
    } else { 
     if (matcher.test(record[grid.columns[i].dataIndex]){ 
      if (!grid.filterHidden && grid.columns[i].isHidden()) { 
       continue; 
      } else { 
       records.push(record); 
        if(records .length < 3){ 
         window.total = records .length; 
         pbt.child('#first').hide(); 
         pbt.child('#prev').hide(); 
         pbt.child('#next').hide(); 
         pbt.child('#last').hide(); 
         pbt.child('#afterTextItem').hide(); 
         pbt.child('#inputItem').hide(); 
        }else{ 
         window.total = records .length; 
         pbt.child('#first').show(); 
         pbt.child('#prev').show(); 
         pbt.child('#next').show(); 
         pbt.child('#last').show(); 
         pbt.child('#afterTextItem').show(); 
         pbt.child('#inputItem').show(); 
        } 
       break; 
      }; 
      }else{ 
       window.data.pop(); // I have added this line so it is working now 
      } 
    }; 
} 
}); 
window.data= records; 
window.data.length= records.length; 
grid.store.load({ params: {start: 0, limit: window.total } });