ExtJS 4.2 pageSize不起作用

时间:2013-05-27 05:52:53

标签: paging server-side extjs4.2

我有一个商店,其中我已经提到pageSize配置为20,而且在我的读者中我已经提到了totalCount配置。我在Java中向servlet发出代理请求。 servlet从MySQL表中获取数据并构建一个包含500行的json,并将json中的totalCount配置设置为500.我在末尾调用store.loadPage(1)。尽管如此,我的网格正在加载网格中每个页面上的所有500条记录。我做错了什么?

下面我给出了一些代码快照

var store = Ext.create('Ext.data.Store', {
    model: 'AM.model.User',
    pageSize: 20,
    proxy: {
        type: 'ajax',
        url: '/pwbench/FcmServlet',
        reader: {
            type: 'json',
            totalProperty: 'total',
            root: 'start'
        },
        writer: {
            type: 'json'
        }
    },
});

从servlet返回的json是这样的 [ “总”: “500”, “启动”:[{....}]]

我检查了http://docs.sencha.com/extjs/4.2.1/extjs-build/examples/grid/paging.html上的网格分页示例,我无法理解为什么我的分页无效。请帮忙。

2 个答案:

答案 0 :(得分:1)

如果您的servlet从数据库中获取500行并在JSON响应中构建500行,那么您获取所有记录的原因是 正好 ,因为您正在发回所有500条记录。

如果你想要分页,你必须在它的SQL查询(最好)或一些后查询过程中实现一些逻辑,以限制行数以匹配在请求中传递的限制参数(可以,但不建议)。

对于MySQL,这通常是通过limit SOMEMAXNUMBER offset SOMEPAGENUMBER完成的。

因此,如果您的网页尺寸为20,则您的查询可能如下所示:

select *
from   sometable
order by column 1 ASC
limit 20 offset 1

这将返回前20行,从第一行开始。然后,当请求下一页时,偏移量将适当改变,依此类推。

答案 1 :(得分:0)

在定义分页工具栏时,对服务器的请求有三个附加参数:page,start和limit 尝试在商店中添加autoLoad : {start: 0, limit: 20}。并根据此参数更新您的Java代码 *不要忘记在PagingToolbar中添加store: your_Store