GWT SimplePager LastButton issue



SimplePager的lastButton出现问题。我在单元格表中有3页,页面大小=11(1个空记录+10个记录(带值)),总记录=26。

我通过扩展SimplePager来使用CustomerPager。

在第一次尝试中,单元格表中显示1+10条记录:下一步&启用了"最后一页"按钮(禁用了"上一页"one_answers"第一页"按钮),这是正确的。但是LastPage按钮不起作用…:(不知道问题出在哪里…(事件未触发)

奇怪的行为:

@1只有当我访问最后一页时,"最后一页"按钮才起作用(在我的情况下为3页)。

@2假设我在第1页n,我移到了第2页(单元格表中总共有3页)。此时所有按钮都已启用,这是正确的。在这种情况下,最后一个按钮正在工作,但行为类似于下一个按钮

我的GWT应用程序集成到我们的一个产品中,因此无法从客户端进行调试。

可能是AbstractPager 的setPage(int index)方法中的索引值不正确

最后一个按钮的代码流如下

//From SimplePager
lastPage.addClickHandler(new ClickHandler() {
        public void onClick(ClickEvent event) {
          lastPage();
        }
      });

       @Override
  public void lastPage() {
    super.lastPage();
  }
 // From AbstractPager
  /**
   * Go to the last page.
   */
  protected void lastPage() {
    setPage(getPageCount() - 1);
  }
 protected void setPage(int index) {
    if (display != null && (!isRangeLimited || !display.isRowCountExact() || hasPage(index))) {
      // We don't use the local version of setPageStart because it would
      // constrain the index, but the user probably wants to use absolute page
      // indexes.
      int pageSize = getPageSize();
      display.setVisibleRange(pageSize * index, pageSize);
    }
  }

或者可能是上面代码中的某些条件为false(来自setPage())

实际记录=26和3个空记录(第一个空记录/页)

数据大小可能有问题:|

如何根据数据大小检查页数??

我该如何解决这个问题?

edit:我发现寻呼机的默认构造函数没有给你一个"最后"按钮,而是给你一一个"快进1000行"按钮(很可怕,对吧?)。

这样调用以下构造函数,并看到您的问题得到解决:

SimplePager.Resources resources = GWT.create(SimplePager.Resources.class); SimplePager simplePager = new SimplePager(TextLocation.CENTER, resources , false, 1000, true);

第一个"false"标志关闭"fastforward按钮",最后一个"true"标志打开"last"按钮。

此外,只有当寻呼机知道您拥有的记录总数时,最后一个按钮才会工作。

您可以调用表的setRowCount函数来更新总数,如下所示:

int totalRecordsSize = 26; //the total amount of records you have boolean isTotalExact = true; //is it an estimate or an exact match table.setRowCount(totalRecordsSize , isTotalExact); //sets the table's total and updates the pager (assuming you called pager.setDisplay(table) before)

如果您使用的是附加的DataProvider,则使用它的updateRowCount方法(相同用法)。

如果没有看到更多的代码,这是一个很难回答的问题,因为可能有多个地方出现了问题。

我会确保你在SimplePager上调用setDisplay(...),这样它就有了计算范围所需的数据。

如果您不能在devmode下运行,我建议您在浏览器中设置一些GWT日志记录(将日志写入弹出面板或其他内容,请参阅本讨论中的示例)。

我认为问题与setPage()中的条件有关。尝试将SOP置于if条件之前,或调试代码

仅在OnRange更改方法AsyncDataProvider中添加了cellTable.setRowCount(int size, boolean isExact)我的问题解决了:)

protected void onRangeChanged(HasData<RecordVO> display) {
//----- Some code --------
cellTable.setRowCount(searchRecordCount, false);
//----- Some code --------
}

相关内容

  • 没有找到相关文章