在我的应用程序中,我使用GWT的(2.5) SimplePager类来显示预加载的数据(我预先知道确切的行数)。
最后一页是问题所在。例如,我有42个元素,初始可见范围为10。第一页是1-10,第二页是11-20,第三页是21-30,第四页是31-40。问题是,第五页不是41-42页(我想要,因为我希望能够在相同的数据上来回滚动和“土地”),而是33-42页。
我尝试过各种重写SimplePager / AbstractPager方法的方法,但都没有成功。例如,如果我重写了com.google.gwt.user.cellview.client.AbstractPager.setPageStart(int),那么执行与setPageStart相同的操作,但是使用以下注释(我认为这是罪魁祸首代码):
if (isRangeLimited && display.isRowCountExact()) {
index = Math.min(index, display.getRowCount() - pageSize);
}最后一页很好(41-42页),但是这个页面将永远删除页面大小,当我从最后一页到前一页时,它将变成40-41页(预期为31-40页)。这可能是因为页面大小不是为寻呼机实例提供的某些常量,而是使用上次使用的Range对象("int pageSize = range.getLength();“在setPageStart方法中)计算的。
是否可以根据我的需要修改分页行为而不破坏任何东西?
谢谢!
发布于 2017-02-14 16:52:45
我最终找到了一个很简单的解决方案。我向我的SimplePager对象提供了一个页面大小(这是可以显示的元素的最大数量,而不管可显示的元素的总数)。然后,我重写了getPage()、hasNextPage()、hasNextPages(int)、hasPreviousPages(int)、nextPage()、previousPage()、setPageStart(int),以便在Range对象上使用提供的页面大小而不是getLength()。
来测试这个更容易(仍然是手工完成的)我使用了GWT的Showcase项目(并以dev模式运行)。
缺点是,我不得不将overriden方法的代码(从AbstractPager - SimplePager只调用超类的方法)复制到我的页面类中。
https://stackoverflow.com/questions/41939084
复制相似问题