gwt celltable: возможно ли редактировать только некоторые ячейки в столбце? - PullRequest
1 голос
/ 03 ноября 2011

Я использую 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");

но что, если я не хочу, чтобы каждая ячейка в столбце была редактируемой, только конкретные, основанные на свойствах моего объекта "Контакт"? Как бы я это настроил? Спасибо, Дэйв

1 Ответ

2 голосов
/ 04 ноября 2011

Я бы сделал это, расширив 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.
     }
  }
}

В методе рендеринга у вас есть доступ к контексту ячейки.Context.getIndex () возвращает абсолютный индекс объекта.Я не могу вспомнить начало моей работы, но если вы не предоставите реализацию ProvidesKey при создании CellTable, вы получите такую, которая будет использовать сам объект в качестве ключа.Таким образом, вы можете получить объект, используя Context.getKey ().

...