使用RPC向下滚动时GWT加载批量数据

时间:2016-06-09 08:26:20

标签: java ajax gwt

我希望显示大量数据,例如cell list,但我的问题是,我希望显示50条记录(我将50个数据加载到单元格列表)当用户向下滚动时,我的RPC服务将加载25个以上.On上面的例子,我们必须加载所有数据,但我不想将整个数据加载到单元格列表,我希望在用户向下滚动时加载更多。

2 个答案:

答案 0 :(得分:0)

可以使用以下方法完成

1)捕获Cell列表中显示的最后一条记录的索引。    此参数可帮助我们查询下一组记录。

2)当用户向下滚动到您想要加载更多记录的位置时触发事件

3)处理事件,然后使用最后显示记录的索引命中RPC服务。

4)更改RPC服务以处理索引(最后显示的记录索引)参数。

5)收到回复后,用新记录更新单元格列表,    更新时,您应将新接收的数据附加到现有的单元格列表数据。

答案 1 :(得分:0)

我用示例example做了,我只是将自己的函数放到ShowMorePagerPanel自定义类中。

 public ShowMorePagerPanel() {
initWidget(scrollable);

// Do not let the scrollable take tab focus.
scrollable.getElement().setTabIndex(-1);

// Handle scroll events.
scrollable.addScrollHandler(new ScrollHandler() {
  public void onScroll(ScrollEvent event) {
    // If scrolling up, ignore the event.
    int oldScrollPos = lastScrollPos;
    lastScrollPos = scrollable.getVerticalScrollPosition();
    if (oldScrollPos >= lastScrollPos) {
      return;
    }

    HasRows display = getDisplay();
    if (display == null) {
      return;
    }
    int maxScrollTop = scrollable.getWidget().getOffsetHeight()
        - scrollable.getOffsetHeight();
    if (lastScrollPos >= maxScrollTop) {
      // now we can add more data
      **createData(); // creates 30 more data with RPC service**
      int newPageSize = Math.min(
          display.getVisibleRange().getLength() + incrementSize,
          display.getRowCount());
      display.setVisibleRange(0, newPageSize);
    }
  }
});

}