2010-12-03 27 views
5

Al principio utilicé la Rejilla. Después de crear una nueva versión del GWT, quiero reemplazar el Grid en el CellTable.Cómo eliminar una fila de la Tabla de Celdas

+0

I no entiendo exactamente lo que estás preguntando ¿Puedes proporcionar algunos ejemplos de código o expandir tu descripción? – jzd

+0

No puedo encontrar un método para eliminar una fila en la clase CellTable como "removeRow (int rowNum)" en Grid – Dasha

Respuesta

10

Consulte la javadoc para obtener más información. Mi ejemplo es como el que usted encontrará allí (sólo un poco extendida):

public void onModuleLoad() { 
    final CellTable<Row> table = new CellTable<Row>(); 

    TextColumn<Row> firstColumn = new TextColumn<Starter.Row>() { 

     @Override 
     public String getValue(Row object) { 
      return object.firstColumn; 
     } 
    }; 
    table.addColumn(firstColumn, "header one"); 

    TextColumn<Row> secondColumn = new TextColumn<Starter.Row>() { 

     @Override 
     public String getValue(Row object) { 
      return object.secondColumn; 
     } 
    }; 
    table.addColumn(secondColumn, "header two"); 

    TextColumn<Row> thirdColumn = new TextColumn<Starter.Row>() { 

     @Override 
     public String getValue(Row object) { 
      return object.thirdColumn; 
     } 
    }; 
    table.addColumn(thirdColumn, "header three"); 

    table.setRowCount(getList().size()); 
    final ListDataProvider<Row> dataProvider = new ListDataProvider<Starter.Row>(getList()); 
    dataProvider.addDataDisplay(table); 

    final SingleSelectionModel<Row> selectionModel = new SingleSelectionModel<Starter.Row>(); 
    table.setSelectionModel(selectionModel); 

    Button btn = new Button("delete entry"); 
    btn.addClickHandler(new ClickHandler() { 

     @Override 
     public void onClick(ClickEvent event) { 
      Row selected = selectionModel.getSelectedObject(); 
      if (selected != null) { 
       dataProvider.getList().remove(selected); 
      } 
     } 
    }); 

    RootPanel.get().add(table); 
    RootPanel.get().add(btn); 

} 

private class Row { 

    private String firstColumn; 
    private String secondColumn; 
    private String thirdColumn; 

    public Row(String firstColumn, String secondColumn, String thirdColumn) { 
     this.firstColumn = firstColumn; 
     this.secondColumn = secondColumn; 
     this.thirdColumn = thirdColumn; 
    } 

} 

private LinkedList<Row> getList() { 
    LinkedList<Row> list = new LinkedList<Row>(); 
    list.add(new Row("first", "entry", "foo")); 
    list.add(new Row("second", "entry", "foo")); 
    list.add(new Row("third", "entry", "foo")); 
    list.add(new Row("fourth", "entry", "foo")); 
    return list; 
} 
1

CellTable como parte de la nueva DataPresentationWidgets utilizada solo para mostrar datos. Por lo tanto, debe eliminar cada miembro de la lista de datos que utiliza CellTable para mostrar.

2

O puede simplemente ejecutar el ciclo de esa manera

@UiHandler("combo") 
public void onChange(ChangeEvent e) { 
    textBoxes.clear(); 
    searchFields.clear(); 
    while(resultsTable.getColumnCount()!=0) { 
     resultsTable.removeColumn(0); 
    } 
    resultsTable.redraw(); 

Dónde resultsTable es un CellTable

Cuestiones relacionadas