GWT CellTable-需要在每行的最后一个单元格中有两个按钮

Sur*_*mar 7 gwt

我正在使用CellTable向其中添加列.当我在每个单元格上添加行和单个数据时,它工作正常.

它有像Name,Age,Address这样的标题,下面有一行包含值

我现在希望在最后一行中使用两个按钮(编辑和删除按钮)在此列下面的行中的单个单元格中捕获一个动作cloumn,并按顺序捕获按钮单击事件.

Name Age Address   Actions
A    15    123    Edit Delete
B    20    578    Edit Delete    
C
Run Code Online (Sandbox Code Playgroud)

你能告诉我怎么做吗?

谢谢

Ümi*_*mit 12

有两种方法可以实现这一目标:

  1. 子类AbstractCell并实现render方法以创建两个按钮并处理其事件(有关详细信息,请参见此处).
  2. 使用CompositeCell添加两个ActionCell小号

第二种方法更简单,更清洁.这是代码:

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

    List<HasCell<Person, ?>> cells = new LinkedList<HasCell<Person, ?>>();
    cells.add(new ActionHasCell("Edit", new Delegate<Person>() {

        @Override
        public void execute(Person object) {
           // EDIT CODE
        }
    }));
    cells.add(new ActionHasCell("Delete", new Delegate<Person>() {

        @Override
        public void execute(Person object) {
            // DELETE CODE
        }
    }));

    CompositeCell<Person> cell = new CompositeCell<Person>(cells);
    table.addColumn(new TextColumn<Person>() {

        @Override
        public String getValue(Person object) {
            return object.getName()
        }
    }, "Name");

    // ADD Cells for Age and Address

    table.addColumn(new Column<Person, Person>(cell) {

        @Override
        public Person getValue(Person object) {
            return object;
        }
    }, "Actions");


}

private class ActionHasCell implements HasCell<Person, Person> {
    private ActionCell<Person> cell;

    public ActionHasCell(String text, Delegate<Person> delegate) {
        cell = new ActionCell<Person>(text, delegate);
    }

    @Override
    public Cell<Person> getCell() {
        return cell;
    }

    @Override
    public FieldUpdater<Person, Person> getFieldUpdater() {
        return null;
    }

    @Override
    public Person getValue(Person object) {
        return object;
    }
}
Run Code Online (Sandbox Code Playgroud)