gwt celltable:是否可以仅使列中的某些单元格可编辑?

gwt celltable:是否可以仅使列中的某些单元格可编辑?,gwt,gwt-celltable,Gwt,Gwt Celltable,我正在使用GWT2.4。在使用单元格表时,我发现可以添加一列,其中所有单元格都是可编辑的 final TextInputCell nameCell = new TextInputCell(); Column<Contact, String> nameColumn = new Column<Contact, String>(nameCell) { @Override public String getValue(Contact object) { retur

我正在使用GWT2.4。在使用单元格表时,我发现可以添加一列,其中所有单元格都是可编辑的

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");
final TextInputCell nameCell=new TextInputCell();
Column nameColumn=新列(nameCell){
@凌驾
公共字符串getValue(联系人对象){
返回object.name;
}
};
表.addColumn(名称栏,“名称”);

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

如果您不希望该特定行中的值可编辑,我将扩展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方法中,您可以访问单元的上下文。getIndex()返回对象的绝对索引。我现在记不起wad的顶部,但是如果在创建CellTable时没有提供ProvideKey实现,您将得到一个使用对象本身作为键的实现。因此,可以使用Context.getKey()获取对象

谢谢你,但我还是错过了一些东西。在我的专栏中,我讨论的是“接触”对象。如何在MyTextInputCell中获取对联系人对象的引用?我已定义了ProviderKey,但它仅标识特定联系人对象的唯一性(即返回其id)。如何使用它来确定如何获取id所基于的对象?我是否必须创建一个包含所有对象的巨型地图,然后只引用该地图?似乎会有一个更优雅的解决方案。谢谢,-请查看此ProvideKey实现,它将实际对象作为键返回。所以,当您调用Context.getKey()时,您将实际获得您的联系人对象。哇,伙计,谢谢!五年后,你让我在成功后大声说“哇”,谢谢你!:)