我在我的应用程序中使用GWT(2.5)SimplePager类来显示预加载的数据(我事先知道确切的行数)。
问题出在最后一页。例如,鉴于我有42个元素,初始可见范围为10。 第一页是1-10,第二页是11-20,第三页是21-30,第四页是31-40。 问题是第五页不是41-42(我想要的,因为我希望能够来回滚动和#34; <34> 完全对同一数据)但是33-42。
我尝试过各种修改,重写SimplePager / AbstractPager方法,但没有成功。 例如,如果我覆盖setPageStart,请执行与com.google.gwt.user.cellview.client.AbstractPager.setPageStart(int)相同的操作,但注释掉以下内容(我认为这是罪魁祸首代码):
if (isRangeLimited && display.isRowCountExact()) {
index = Math.min(index, display.getRowCount() - pageSize);
}
最后一页很好(41-42),但这会永远删除页面大小,当我从最后一页到上一页时,它变为40-41(预期:31-40)。这可能是因为页面大小不是提供给寻呼机实例的常量,而是使用上次使用的Range对象计算的(&#34; int pageSize = range.getLength();&#34;在setPageStart方法中)
根据我的需要修改分页行为而不破坏任何内容的任何线索?
谢谢!
答案 0 :(得分:0)
我最终得到了一个简单易用的解决方案。 我向SimplePager对象提供了一个页面大小(可以显示的最大元素数,不管可以显示的元素总数)。然后我覆盖了getPage(),hasNextPage(),hasNextPages(int),hasPreviousPages(int),nextPage(),previousPage(),setPageStart(int)来使用提供的页面大小而不是Range对象上的getLength()。 / p>
为了更容易地测试它(仍然手工完成......)我使用了GWT的Showcase项目(并以开发模式运行)。
缺点是我必须复制覆盖方法的代码(从AbstractPager - SimplePager除了调用超类的方法之外什么都不做)进入我的Pager类。