【问题标题】:How to remove a row from the Cell Table如何从单元格表中删除一行
【发布时间】:2010-12-03 13:17:55
【问题描述】:

起初我使用网格。 创建新版本的 GWT 后,我想替换 CellTable 上的 Grid。

【问题讨论】:

  • 我不明白你在问什么。您能否提供一些代码示例或扩展您的描述?
  • 我找不到像 Grid 中的“removeRow(int rowNum)”那样删除 CellTable 类中的行的方法

标签: java gwt


【解决方案1】:

查看javadoc 了解详情。我的例子就像你在那里找到的一样(只是有点扩展):

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;
}

【讨论】:

    【解决方案2】:

    或者你可以像这样运行循环

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

    其中 resultsTable 是一个 CellTable

    【讨论】:

      【解决方案3】:

      CellTable 作为新DataPresentationWidgets 的一部分仅用于显示数据。所以你应该从 CellTable 用来显示的数据列表中删除相应的成员。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-07-14
        • 2020-03-11
        • 1970-01-01
        • 1970-01-01
        • 2014-08-30
        • 1970-01-01
        • 2013-03-26
        相关资源
        最近更新 更多