我有一个ExtJS GridPanel,底部有一个商店和一个分页工具栏。我可以使用以下方法通过浏览器手动设置起始页面:
www.someurl.com/page/7
这将正确加载第7页的数据存储。但是,分页工具栏不会更新商店中的页码(它仍然显示1)。我的印象是,通过更改商店的页面也会更改分页工具栏中的页面,但事实并非如此。以下是一些示例代码:
var _store = new Ext.data.Store({
id : 'store_id',
remoteSort : true,
autoDestroy : true,
restful : true,
proxy : _proxy,
reader : _reader,
writer : _writer
});
var _pagingToolbar = new Ext.PagingToolbar({
displayInfo : true,
pageSize : 20,
store : _store
});
_I.grid = new Ext.ux.GridPanel({
id : _I.options.id+'_grid',
title : _I.options.title,
store : _store,
bbar : _pagingToolbar
});
_I.options.page = 7; //start store on page 7
_I.grid.render('somediv');
_store.load({params:{start:_I.options.page, limit:20, sort:'id', dir:'ASC'}});
由于起始页面设置为7,因此存储中加载的数据是正确的,但是,页面工具栏中的页面显示为2.我尝试手动设置页面
_pagingToolbar.changePage(20); // should set page to 20
我得到相同的结果,数据存储会加载正确的页面,但工具栏文本不会更改。订单错了吗?我也尝试在渲染网格之前加载商店,但无效,结果相同。
答案 0 :(得分:1)
由于商店和传呼栏之间存在链接,您应该只需使用.changePage(n)
方法更改页面,自动调整商店内容。您也不需要使用记录集更新对存储进行编码。另外,您是否100%确定商店正在显示第7页的正确记录?
答案 1 :(得分:0)
您从服务器端返回的分页信息是什么? PagingToolbar只从商店获取该信息。
您能否向您的读者展示显示分页数据的服务器响应部分?