GWT2.1不带分页的数据表示小部件

GWT2.1不带分页的数据表示小部件,gwt,tabular,Gwt,Tabular,我试图用大数据集构建一个表,并且希望避免分页。(我想做一些类似于Yahoo Mail grid的事情,在绘制网格后检索数据。我认为最初检索前100封邮件,然后在用户向下滚动后才检索邮件) 我看到的数据表示小部件示例包括分页。有可能做我想做的吗 编辑:您也可以将其称为无限滚动表是的,这是可能的。过去有一个叫做DynaGrid的例子,但现在这个链接已经失效了。我在其他任何地方都找不到它(注意:这和以前的不同)。您可以联系作者Reinier Zwitserloot,询问是否需要他的DynaGrid副本

我试图用大数据集构建一个表,并且希望避免分页。(我想做一些类似于Yahoo Mail grid的事情,在绘制网格后检索数据。我认为最初检索前100封邮件,然后在用户向下滚动后才检索邮件)

我看到的数据表示小部件示例包括分页。有可能做我想做的吗


编辑:您也可以将其称为无限滚动表

是的,这是可能的。过去有一个叫做DynaGrid的例子,但现在这个链接已经失效了。我在其他任何地方都找不到它(注意:这和以前的不同)。您可以联系作者Reinier Zwitserloot,询问是否需要他的DynaGrid副本。您还可以搜索,如果找不到任何内容,请在此处发布,询问其他人是否知道在哪里可以找到它。

Ext Gwt(又名GXT)有一个支持此功能的“实时网格”实现(请参阅)。代码是GPL,但您可以购买在商业应用程序中使用此代码的许可证。

Dean已经提到了Ext GWT,但我也想建议。


我试着找dynagrid,但没能找到。另外,我想使用一个其他人正在使用并维护的小部件。这就是为什么我想使用数据表示小部件。你的链接不正确,但我还是找到了。我喜欢它:
/**
 * A scrolling pager that automatically increases the range every time the
 * scroll bar reaches the bottom.
 */
public class ShowMorePagerPanel extends AbstractPager {

  /**
   * The default increment size.
   */
  private static final int DEFAULT_INCREMENT = 20;

  /**
   * The increment size.
   */
  private int incrementSize = DEFAULT_INCREMENT;

  /**
   * The last scroll position.
   */
  private int lastScrollPos = 0;

  /**
   * The scrollable panel.
   */
  private final ScrollPanel scrollable = new ScrollPanel();

  /**
   * Construct a new {@link ShowMorePagerPanel}.
   */
  public ShowMorePagerPanel() {
    initWidget(scrollable);

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

        HasRows display = getDisplay();
        if (display == null) {
          return;
        }
        int maxScrollTop = scrollable.getWidget().getOffsetHeight()
            - scrollable.getOffsetHeight();
        if (lastScrollPos >= maxScrollTop) {
          // We are near the end, so increase the page size.
          int newPageSize = Math.min(
              display.getVisibleRange().getLength() + incrementSize,
              display.getRowCount());
          display.setVisibleRange(0, newPageSize);
        }
      }
    });
  }

  /**
   * Get the number of rows by which the range is increased when the scrollbar
   * reaches the bottom.
   *
   * @return the increment size
   */
  public int getIncrementSize() {
    return incrementSize;
  }

  @Override
  public void setDisplay(HasRows display) {
    assert display instanceof Widget : "display must extend Widget";
    scrollable.setWidget((Widget) display);
    super.setDisplay(display);
  }

  /**
   * Set the number of rows by which the range is increased when the scrollbar
   * reaches the bottom.
   *
   * @param incrementSize the incremental number of rows
   */
  public void setIncrementSize(int incrementSize) {
    this.incrementSize = incrementSize;
  }

  @Override
  protected void onRangeOrRowCountChanged() {
  }
}