2010-12-03 5 views
5

Au début, j'ai utilisé la grille. Après avoir créé une nouvelle version de GWT, je veux remplacer la grille sur le CellTable.Comment supprimer une ligne de la table des cellules

+0

I Je ne comprends pas exactement ce que vous demandez. Pouvez-vous fournir des exemples de code ou développer votre description? – jzd

+0

Je ne trouve pas de méthode pour supprimer une ligne dans la classe CellTable comme "removeRow (int rowNum)" dans la grille – Dasha

Répondre

10

Consultez le javadoc pour plus de détails. Mon exemple est comme celui que vous trouverez là-bas (un peu étendu):

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 dans le cadre du nouveau DataPresentationWidgets utilisé juste pour afficher des données. Vous devez donc supprimer le membre correspondant de la liste des données que CellTable utilise pour afficher.

2

Ou vous pouvez simplement lancer le cycle comme ça

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

Où resultsTable est un CellTable

Questions connexes