>

데이터 세트가 큰 테이블을 만들려고하는데 페이징을 피하고 싶습니다. (그리드가 그려진 후 데이터를 검색하는 Yahoo Mail 그리드와 비슷한 작업을하고 싶습니다. 처음 100 개의 메일을 검색 한 다음 사용자가 아래로 스크롤 한 후에 만 ​​메일을 검색하는 것으로 생각합니다)

내가 본 데이터 프리젠 테이션 위젯의 예로는 페이징이 있습니다. 내가 원하는 것을 할 수 있습니까?

편집 :이것을 무한 스크롤 테이블이라고 부를 수도 있습니다


  • 답변 # 1

    Dean은 이미 Ext GWT를 언급했지만 SmartGWT의 구현도 제안하고 싶습니다.

  • 답변 # 2

    GWT 쇼케이스에는 이것의 예가 있습니다

    /**
     * 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() {
      }
    }
    
    

  • 답변 # 3

    예, 가능합니다. 예전에는 DynaGrid라는 예제가 있었지만 지금은 연결이 끊어졌습니다. 다른 곳에서는 찾을 수 없었습니다 (참고 : SourceForge의 DynaGrid와 동일하지 않습니다). 자신의 DynaGrid 사본을 얻는 방법에 대해 문의하려면 저자 Reinier Zwitserloot에게 문의하십시오. 또한 GWT 그룹을 검색 할 수 있으며 아무것도 찾지 못하면 다른 곳을 찾을 수 있는지 묻는 질문을 게시하십시오.

  • 답변 # 4

    Ext Gwt (AKA GXT)에는 "라이브 그리드 (Live Grid)"가 구현되어 있습니다. "는이 기능을 지원합니다 (http://www.sencha.com/examples/explorer.html#livegrid 참조). 상용 응용 프로그램에서이 라이센스를 사용할 수는 있지만 코드는 GPL입니다.

  • 이전 html - 겹치는 버튼의 "클릭 순서"를 어떻게 변경합니까?
  • 다음 c++ - 기본 POD 전용 템플릿 전문화