我有一个商店,其中我已经提到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上的网格分页示例,我无法理解为什么我的分页无效。请帮忙。
答案 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