1

我正在使用 GWT 2.4。使用 CellTable 时,我已经看到可以添加一个列,其中所有单元格都是可编辑的......

final TextInputCell nameCell = new TextInputCell();
Column<Contact, String> nameColumn = new Column<Contact, String>(nameCell) {
  @Override
  public String getValue(Contact object) {
    return object.name;
  }
};
table.addColumn(nameColumn, "Name");

但是如果我不希望列中的每个单元格都是可编辑的,只有特定的单元格,基于我的“联系人”对象中的属性,该怎么办?我该如何设置?谢谢, - 戴夫

4

1 回答 1

2

如果您不希望该特定行中的值可编辑,我将这样做的方法是扩展 TextInputCell 并覆盖渲染方法以渲染其他内容。

像这样的东西:

public class MyTextInputCell extends TextInputCell {
  @Override
  public void render(Context context, String value, SafeHtmlBuilder sb) {
     YourObject object = getYourObject();
     if ( object.isThisCellEditable() ) {
        super.render(context,value,sb);
     } else {
        sb.appendEscaped(value); // our some other HTML. Whatever you want.
     }
  }
}

在 render 方法中,您可以访问单元格的上下文。Context.getIndex() 返回对象的绝对索引。我现在不记得我的 wad 的顶部,但是如果您在创建 CellTable 时不提供 ProvidesKey 实现,您将获得一个使用对象本身作为键的实现。因此,您可以使用 Context.getKey() 获取对象。

于 2011-11-04T00:44:44.320 回答