2011-11-20 61 views
4

我想让商店的pageSize被限制为1.我在网格中有10个项目,而分页机制是正确的,显示10个中的1个,10个中的2个,网格仍然显示全部10个项目。我也试过在json中将“total”属性返回1,但这仍然不起作用。有任何想法吗?ExtJS4 - 网格商店页面大小

文档中的示例不是很有用,因为它显示了源代码,但实时预览是空的。

 var photos = new Ext.data.Store({ 
      model: 'Photos', 
      autoLoad: true, 
      pageSize: 1 
     }); 

     var photosGrid = Ext.create('Ext.grid.Panel', { 
      id: 'PhotoGrid', 
      store: photos, 
      columns: [ 
         { text: "Filename", width: 200, dataIndex: 'filename' } 
        ], 
      dockedItems: [{ 
       xtype: 'pagingtoolbar', 
       store: photos, 
       dock: 'bottom', 
       displayInfo: true 
      }], 
      region: 'center', 
      border: 0, 
      overCls: 'row-pointer' 
     }); 

回答

1

喜,以及你的问题是你可能回在你的JSON的所有10个项目,寻呼支持你必须自己实现,所有的页面做的是呼吁有类似的具体参数商店的负载页面限制和页面起始索引。您必须在后端使用这些参数才能一次发送一个项目。 Chers队友。

编辑

//this is the model we will be using in the store 
Ext.define('Page', { 
    extend: 'Ext.data.Model', 
    fields: [ 
     {name: 'id', type: 'int'}, 
    ] 
}); 

var data = null; 
var store = null; 
Ext.Ajax.request({ 
    url: 'someurl', 
    success: function(result){ 
     data = Ext.decode(result.responseText); 
     store = Ext.create('Ext.data.Store', { 
      autoLoad: true, 
      model: 'Page', 
      pageSize: 1, 
      data : data, 
      proxy: { 
       type: 'memory', 
       reader: { 
        type: 'json', 
        root: 'pages'//this has to be as the root from your json 
       } 
      } 
     }); 
    } 
}); 
+0

这不是很酷。我想要的是能够抓取文档并将该文档分割成页面并将它们保存为图像,然后使用网格一次一个地导航这些图像。有关如何在商店中使用此功能的任何想法?这就像商店需要在内存中一样,一次从这个存储库中抽取一张图像。 – fes

+0

这听起来像你需要使用内存代理,我个人没有使用它,但它似乎并不复杂..你只是保持你的数据在一个变量,商店使用代理从那里获取数据。 http://docs.sencha.com/ext-js/4-0/#!/api/Ext.data.proxy.Memory – nscrob

+0

即使有内存商店,你也会遇到与pageSize相同的问题。我还不确定如何在内存中存储json,并且一次只能获取一个。内存商店将包含所有商品,但是如果您在商店中添加限制或页面大小,则只能一次将一个商品存储在json中,这样就失去了目的。将不得不考虑一种不同的方法,因为我看不到这个工作。干杯。 – fes

0

这是格式化的JSON在脚本查询的问题。 当你用pageSize使用extjs时,它会发送带有参数的查询(我记得page & limit)。 在您的服务器端脚本中,您必须检查它们是否存在,如果是,请更改查询以添加limit子句(或其他数据库中的等效项)。