2012-02-05 4 views
1

Я включил подкачку в свой код ... но мой пейджинг, похоже, работает некорректно. Я пытаюсь показать 3 результата perpage .. но он показывает все на одной странице, и когда вы нажимаете дальше, он повторяет те же результаты.Extjs не paging правильно

Ext.require([ 
    'Ext.data.*', 
    'Ext.grid.*' 
]); 

Ext.onReady(function(){ 
    Ext.define('Book',{ 
     extend: 'Ext.data.Model', 
     fields: [ 
      // set up the fields mapping into the xml doc 
      // The first needs mapping, the others are very basic 
      {name: 'Author', mapping: 'ItemAttributes > Author'}, 
      'Title', 'Manufacturer', 'ProductGroup' 
     ] 
    }); 

    // create the Data Store 
    var store = Ext.create('Ext.data.Store', { 
     pageSize: 3,     
     model: 'Book', 
     autoLoad: true, 
     proxy: { 
      // load using HTTP 
      type: 'ajax', 
      url: 'sheldon-2.xml', 
      // the return will be XML, so lets set up a reader 
      reader: { 
       type: 'xml', 
       // records will have an "Item" tag 
       record: 'Item', 
       idProperty: 'ASIN', 
       totalRecords: '@total' 
      } 
     } 
    }); 

    // create the grid 
    var grid = Ext.create('Ext.grid.Panel', { 
     store: store, 
     columns: [ 
      {text: "Author", flex: 1, dataIndex: 'Author', sortable: true}, 
      {text: "Title", width: 180, dataIndex: 'Title', sortable: true}, 
      {text: "Manufacturer", width: 115, dataIndex: 'Manufacturer', sortable: true}, 
      {text: "Product Group", width: 100, dataIndex: 'ProductGroup', sortable: true} 
     ], 
     renderTo:'example-grid-group-v3', 
     width: 540, 
     height: 200, 
     // paging bar on the bottom 
     bbar: Ext.create('Ext.PagingToolbar', { 
      store: store, 
      displayInfo: true, 
      displayMsg: 'Displaying topics {0} - {1} of {2}', 
      emptyMsg: "No topics to display" 

     }) 
    }); 
}); 

ответ

0

Пожалуйста переместите PAGESIZE: 3 линии в Ext.PagingToolbar объекта. Пейджинг обрабатывается на стороне сервера. Клиент отправляет параметры на серверную сторону, которые сервер должен интерпретировать, а затем отвечать соответствующими данными. Кажется sheldon-2.xml не поддерживает пейджинг и возвращает все записи. См. Пример в документации Ext.PagingToolbar.

1

Как это работает, вам необходимо иметь программу (PHP или ASPX или некоторые подобные вещи) на сервере, который принимает информацию подкачки и отправляет данные на страницах. В вашем случае это статический XML-файл, который будет возвращен в полном объеме по запросу. Я не уверен, что у вас могут быть все данные на стороне клиента, и у вас есть ExtJS. Возможно, вам захочется сделать больше исследований в разных магазинах/прокси, чтобы узнать, возможно ли это. Буферизованная прокрутка - это еще один вариант для вас, если вы хотите получить все данные с сервера и отобразить только те данные, которые отображаются в настоящее время.