【问题标题】:GWT SimplePager issuesGWT SimplePager 问题
【发布时间】:2017-06-15 19:08:56
【问题描述】:

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

问题在于最后一页。例如,假设我有 42 个元素,初始可见范围为 10。 第一页是 1-10,第二页是 11-20,第三页是 21-30,第四页是 31-40。 问题是第五页不是 41-42(我想要,因为我希望能够在相同的数据上来回滚动并“完全”)而是 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 对象计算的(setPageStart 方法中的“int pageSize = range.getLength();”)。

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

谢谢!

【问题讨论】:

    标签: gwt


    【解决方案1】:

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

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

    缺点是我必须将重写方法的代码(来自 AbstractPager - SimplePager 除了调用超类的方法之外什么都不做)复制到我的 Pager 类中。

    【讨论】:

      猜你喜欢
      • 2012-04-06
      • 1970-01-01
      • 2012-02-21
      • 1970-01-01
      • 1970-01-01
      • 2011-10-15
      • 1970-01-01
      • 2011-05-11
      • 1970-01-01
      相关资源
      最近更新 更多