GWT SimplePager 问题

GWT SimplePager issues

我在我的应用程序中使用 GWT (2.5) SimplePager class 来显示预加载的数据(我提前知道确切的行数)。

最后一页有问题。例如,假设我有 42 个元素,初始可见范围为 10。 第一页是 1-10,第二页是 11-20,第三页是 21-30,第四页是 31-40。 问题是第五页不是 41-42(这是我想要的,因为我希望能够在同一数据上来回滚动 "land" exactly)但是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)。这可能是因为页面大小不是提供给 pager 实例的某个常量,而是使用上次使用的 Range 对象计算的(setPageStart 方法中的"int pageSize = range.getLength();")。

关于在不破坏任何内容的情况下根据我的需要修改分页行为的任何线索?

谢谢!

我最终找到了一个足够简单的可行解决方案。 我为我的 SimplePager 对象提供了页面大小(这是可以显示的最大元素数,与可显示的元素总数无关)。然后我覆盖了 getPage()、hasNextPage()、hasNextPages(int)、hasPreviousPages(int)、nextPage()、previousPage()、setPageStart(int) 以使用提供的页面大小而不是 Range 对象上的 getLength()。

为了更轻松地进行测试(仍然是手动完成...)我使用了 GWT 的 Showcase 项目(并且 运行 它处于开发模式)。

缺点是我必须将覆盖方法的代码(来自 AbstractPager - SimplePager 除了调用 superclass' 方法之外什么都不做)复制到我的 Pager class.