我正在使用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”对象中的属性呢?我该如何设置?谢谢, - 戴夫
答案 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()获取对象。