2011-01-05 13 views
7

Estoy atascado con el buscapersonas de la célula gwt que quiero adjuntar a una mesa de células. Estoy fijando de esta manera:Ayuda de buscapersonas GWT simple

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 correctamente se ha definido

Pero cuando se visualiza la tabla de celdas, las tres primeras filas se muestran correctamente, pero cuando pulso siguiente, no hay filas se muestran y el la tabla de celda es como si cargara. Ahora desde esa página, si presiono hacia atrás, nuevamente la página está como cargando.

Ahora, otro problema es que continuamente puedo presionar a continuación y el número de páginas sigue añadiendo incluso si sólo hay 8 filas

Respuesta

14

me encontré con este mismo problema cuando se intentó por primera vez a usar la tabla de celdas de paginación Se implementa de tal manera que el localizador no hace suposiciones sobre su conjunto de datos, incluso después de llamar a setRowSize. Esto está diseñado de esta manera para que pueda realizar una carga diferida.

Una vez que sepa cuántas filas de datos hay disponibles, debe llamar al cellTable.setRowCount(int) y esto solucionará su problema donde el buscapersonas sigue funcionando. Ahora, para implementar la paginación, también deberá agregar un RangeChangeHandler a la tabla de celdas para establecer los datos. Aquí hay un código de ejemplo:

@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

gracias, funciona genial, me estaba volviendo loco con esto !! – Noor

+1

Me enteré, cuando NO establece cellTable.setRowCount (int) funciona automáticamente. Puedo confirmar con un fragmento de código si alguien está interesado. – Xorty

+0

¿qué es "resultado" en el ejemplo anterior? – sap

4

Puede ser más fácil de usar ListDataProvider<T>, en lugar de limitarse a proporcionar la lista. Así, el ejemplo sería:

// 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

que enfrentan el mismo problema, y ​​sólo tuvo que ajustar el tamaño de la página de la CellTable y retire el tamaño de página del dispositivo, como sucede esto:

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

Aquí mi prueba con GWT 2.5 - yo 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); 
         } 
        }); 
     } 
    };