1

私はGWT2.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 を拡張し、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() は、オブジェクトの絶対インデックスを返します。今はワッドの一番上を思い出せませんが、CellTable を作成するときに ProvidesKey 実装を提供しないと、オブジェクト自体をキーとして使用する実装が得られます。したがって、Context.getKey() を使用してオブジェクトを取得できます。

于 2011-11-04T00:44:44.320 に答える