2010-06-27 21 views
6

Sto provando a creare una tabella con un set di dati di grandi dimensioni e vorrei evitare il paging. (Mi piacerebbe fare qualcosa di simile alla griglia di Yahoo Mail che recupera i dati dopo che la griglia è stata disegnata. Penso che inizialmente verranno recuperati i primi 100 messaggi e quindi la posta verrà recuperata solo dopo che l'utente scorre verso il basso)GWT 2.1 Data Presentation Widget senza paging

L'esempio del widget di presentazione dei dati che ho visto includono il paging. È possibile fare ciò che voglio?

edit: Si potrebbe anche chiamare questo tavolo un rotolo infinito

risposta

1

Dean ha già menzionato Ext GWT ma vorrei suggerire anche SmartGWT's implementation.

+0

Il tuo link non era corretto ma l'ho trovato comunque. Mi piace: http://www.smartclient.com/smartgwt/showcase/#featured_grid_live – Tihom

0

Sì, è possibile. C'era un esempio di quello chiamato DynaGrid here ma quel collegamento è morto ora. Non sono stato in grado di trovarlo da nessun'altra parte (nota: non è lo stesso di DynaGrid on SourceForge). Potresti essere in grado di contattare l'autore, Reinier Zwitserloot, per informazioni su come ottenere una copia del suo DynaGrid. Puoi anche cercare lo GWT Group e se non trovi nulla, posta lì chiedendo se qualcun altro sa dove trovarlo.

+0

ho provato a cercare un dynagrid, ma non sono stati in grado di trovarlo. Inoltre, mi piacerebbe utilizzare un widget che viene utilizzato da altri e viene mantenuto. Ecco perché volevo utilizzare il widget di presentazione dei dati. – Tihom

0

Ext Gwt (AKA GXT) ha un'implementazione di una "Live Grid" che supporta questa funzionalità (vedere http://www.sencha.com/examples/explorer.html#livegrid). Il codice è GPL, sebbene sia possibile acquistare una licenza per utilizzarlo in applicazioni commerciali.

4

ci sono un esempio di questo nel GWT Showcase

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