gwt celltable:可能只使列中的某些单元格可编辑?

时间:2011-11-03 16:59:05

标签: gwt gwt-celltable

我正在使用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");

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

1 个答案:

答案 0 :(得分:2)

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

这样的事情:

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时没有提供ProvideKey实现,那么你将得到一个将对象本身用作关键字的实现。因此,您可以使用Context.getKey()获取对象。