2013-10-02 3 views
0

Использование ExtJS 4.2 - У меня есть вызов AJAX, заполняющий хранилище с полным набором результатов в формате JSON (с использованием loadRawData). Теперь мне нужно ограничить количество результатов, отображаемых на сетке за раз. Конечная цель - реализовать клиентский пейджинг. Я пробовал использовать pagingmemoryproxy с большой удачей.Как ограничить количество результатов в сетке?

Ext.define('TestApp.view.TestGrid' , { 
extend: 'Ext.grid.Panel', 
alias: 'widget.testgrid', 

requires:[ 
    'TestApp.store.TestStore' 
], 

initComponent: function() { 
    var me = this; 
    this.store = Ext.create('Ext.data.Store', { 
     model: 'TestApp.model.TestModel', 
     proxy: { 
      type: 'memory',    
      reader: { 
       type: 'json' 
      }, 
     }, 
     pageSize: 20 
    }); 

// set the maxRows parameter based on the store's page size 
    this.maxRows = this.store.pageSize; 
    this.columns = this.buildColumns(); 
    this.bbar = Ext.create('Ext.PagingToolbar', { 
     itemId: 'pagingToolbar', 
     store: this.store, 
     dock: 'bottom', 
     displayInfo: true 
    }); 
    this.callParent(); 
} 

Мой контроллер использует следующие AJAX называют

Ext.Ajax.request({ 
     url: '/testing/test', 
     method: "POST", 
     jsonData : requestParams, 
     timeout: 120000,  
     headers: { 
      'Accept': 'application/json', 
      'Content-Type': 'application/json' 
     }, 
     success: function(response) { 
      var resp = Ext.decode(response.responseText); 
      var testStore = testGrid.getStore(); 

      var numResults = response.getAllResponseHeaders().resultlength; 

      // this successfully loads results into store and populates grid 
      // with pagingtoolbar displaying page 0 of 0 
      testStore.loadRawData(resp); 


      //testStore.loadPage(1); 

     }, 
+0

Что вы имеете в виду «не везло?» Отправьте свой код. –

+0

Настройка прокси-типа как 'pagingmemory'/'pagingmemoryproxy' приводит к ошибке: Uncaught TypeError: Невозможно вызвать метод подстроки undefined – wushugene

ответ

0

Вы должны добавить pagingtoolbar к сетке.

В основном есть три вещи, которые нужно сделать:

1) Добавить панель инструментов поискового вызова в сетке 2) В магазине используется сетка должна быть дана атрибут «PAGESIZE» 3) При использовании loadrawdata, вам необходимо обновить панель инструментов, загрузив ее. для этого используйте функцию loadPage.

Следующая тема поможет вам начать работу: How to manage PagingToolbar in Ext-js 4.2 correctly?

+0

Спасибо за указатель. Я добавил pagingtoolbar в свою сетку, но он говорит, что страница 0 из 0 после загрузки содержимого всего магазина в сетку. После этого функция loadPage заканчивает очистку сетки. Я установил pageSize внутри магазина. – wushugene

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