2011-01-05 13 views
7

Sono bloccato con il cercapersone gwt che voglio collegare a un tavolo di celle. Io pongo in questo modo:GWT Simple Pager Help

List <ForumMessage> AllMessages=populated from an rpc; 
CellTable cellTable = new CellTable <ForumMessage>(); 
simplePager = new SimplePager(); 
cellTable.addColumn(ColumnM); 
cellTable.setRowData(0,AllMessages); 
simplePager.setDisplay(cellTable); 
simplePager.setPageSize(3); 

ColumnM è stato correttamente definito

Ma quando viene visualizzata la tabella delle cellule, le prime tre file vengono visualizzati correttamente ma quando premo prossimo, nessuna riga illustrati ed il la tabella delle celle è come se il caricamento. Ora da quella pagina, se premo di nuovo, di nuovo la pagina è come se il caricamento.

Ora, un altro problema è che posso continuamente premere successivo e il numero di pagine continua a aggiungendo anche se ci sono solo 8 righe

risposta

14

ho funzionato in questo stesso problema quando ho provato prima di utilizzare la tabella cella per paging. È implementato in modo tale che il cercapersone non faccia supposizioni sul set di dati anche dopo aver chiamato setRowSize. Questo è progettato in questo modo in modo da poter eseguire il caricamento lento.

Una volta che sai quante righe di dati sono disponibili, è necessario chiamare cellTable.setRowCount(int) e questo risolverà il problema in cui il cercapersone continua ad andare. Ora, per implementare il paging, sarà necessario aggiungere un RangeChangeHandler alla tabella delle celle per impostare i dati. Ecco alcuni esempi di codice:

@Override 
public void onRangeChange(RangeChangeEvent event) 
{ 
    Range range = cellTable.getVisibleRange(); 
    int start = range.getStart(); 
    int length = range.getLength(); 
    List<ForumMessage> toSet = new ArrayList<ForumMessage>(length); 
    for (int i = start; i < start + length && i < AllMessages.size(); i++) 
     toSet.add((ForumMessage) AllMessages.get(i)); 
    cellTable.setRowData(start, toSet); 
} 
+0

grazie, funziona alla grande, stavo impazzendo con questo !! – Noor

+1

Ho scoperto che quando non si imposta cellTable.setRowCount (int) funziona automaticamente. Posso confermare con lo snippet di codice se qualcuno è interessato. – Xorty

+0

cosa è "risultato" nell'esempio sopra? – sap

4

Può essere più facile da usare ListDataProvider<T>, invece di fornire la lista. Così, il vostro esempio potrebbe essere:

// get the list 
List <ForumMessage> AllMessages=populated from an rpc; 

// create table 
CellTable cellTable = new CellTable <ForumMessage>(); 
cellTable.addColumn(ColumnM); 

// create pager 
simplePager = new SimplePager(); 
simplePager.setDisplay(cellTable); 
simplePager.setPageSize(3); 

// create data provider 
ListDataProvider<ForumMessage> dataProvider = new ListDataProvider<ForumMessage>(); 
dataProvider.addDataDisplay(cellTable); 
dataProvider.setList(AllMessages); 
3

Ho affrontato lo stesso problema, e ho avuto solo per impostare le dimensioni della pagina del cellTable e rimuovere le dimensioni della pagina del cercapersone come questo:

List <ForumMessage> AllMessages=populated from an rpc; 
CellTable cellTable = new CellTable <ForumMessage>(); 
simplePager = new SimplePager(); 
cellTable.addColumn(ColumnM); 
cellTable.setRowData(0,AllMessages); 
simplePager.setDisplay(cellTable); 
// set the PageSize of the cellTable 
cellTable.setPageSize(3); 
-1

Qui il mio test con GWT 2.5 - io uso AsyncDataProvider:

SimplePager sp = new SimplePager(TextLocation.LEFT, true, 
      2 * ct.getPageSize(), true); 

AsyncDataProvider<Menu> adp = new AsyncDataProvider<Menu>() { 
     @Override 
     protected void onRangeChanged(HasData<Menu> display) { 
      final Range range = display.getVisibleRange(); 
      ColumnSortInfo csi = ct.getColumnSortList().get(0); 

      String dataStoreName = csi.getColumn().getDataStoreName(); 
      boolean isAscending = csi.isAscending(); 

      AAFcms.getAAFService().getAdminMenu(
        new AdminMenuReq(range, dataStoreName, isAscending), 
        new AsyncCallback<AdminMenuResp>() { 
         @Override 
         public void onFailure(Throwable caught) { 
          System.out.println(caught.getStackTrace()); 
          // TODO Auto-generated method stub 
         } 

         @Override 
         public void onSuccess(AdminMenuResp result) { 
          ct.setRowData(range.getStart(), 
            result.getMenus()); 
          ct.setRowCount(result.getRows(), true); 
         } 
        }); 
     } 
    };