ExtJS4 - Grid Store pageSize

4
我想将store的pageSize限制为1。我在网格中有10个项目,虽然分页机制正确显示1 of 10、2 of 10等,但网格仍然显示所有10个项目。我还尝试在json中返回"total"属性为1,但这仍然不起作用。有什么想法吗?
文档中的示例也不是很有帮助,因为它显示源代码,但实时预览为空。
        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'
        });
2个回答

1
嘿,你的问题可能是你在返回json时返回了所有10个项目。分页后端需要自己实现,分页只是调用带有特定参数的store加载,如页面限制和页面起始索引。你必须在后端使用这些参数一个接一个地发送项目。好运啊。

编辑

//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
                }
            }
        }); 
    }
});

那不酷。我想要的是能够抓取文档并将其拆分为页面,然后将它们保存为图像,然后使用网格逐个浏览这些图像。有没有关于如何在存储库中使用此功能的想法?就像存储库需要在内存中,并且您可以从该存储库逐个提取图像。 - fes
看起来你需要使用内存代理,我个人没有使用过,但它似乎并不复杂... 你只需将数据保存在变量中,存储器将使用代理从那里获取数据。http://docs.sencha.com/ext-js/4-0/#!/api/Ext.data.proxy.Memory - nscrob
我认为即使使用内存存储,你仍然会遇到pageSize的同样问题。我还不确定如何在内存中存储json并一次只获取一个。内存存储将包含所有项目,但如果在存储上设置限制或页面大小,则每次只能存储1个项目的json,这就失去了意义。必须考虑不同的方法,因为我看不出这种方法可行。干杯。 - fes
你误解了我的意思,通过一个ajax请求将所有页面加载到数据数组中,然后使用内存代理的另一个存储器每次只加载本地数组中的一页数据,每页大小为1。我会编辑我的回答,说明我的想法。 - nscrob

0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接