Я использую CellTable для показа моих записей, но теперь я хочу показать окно выбора, когда пользователь нажимает на ячейку. Еще одна вещь заключается в том, что поле выбора - это мой собственный виджет, а не предопределенный. Можете ли вы предложить мне любой способ сделать это?
Как я могу поместить виджет в CellTable Cell?
Ответ 1
В группе GWT google есть сообщение, в котором обсуждается ответ. В основном вы создаете свой собственный виджет как обычно, а внутри функции рендеринга используется widget.getElement(). GetInnterHTML().
@Override
public void render(com.google.gwt.cell.client.Cell.Context context,
String value, SafeHtmlBuilder sb) {
if (value != null) {
MyWidget widget = new MyWidget(value);
sb.appendEscaped(widget.getElement.getInnerHTML());
}
}
Ответ 2
Это анти-шаблон. Вся цель ячеек заключается в том, что у вас нет виджетов: вы должны "визуализировать" html непосредственно в ячейке.
Ответ 3
Там есть сообщение в группе Google GWT, в которой обсуждается ответ. В основном вы создаете свой собственный виджет как обычно, а внутри функции рендеринга используется widget.getElement(). GetInnterHTML().
@Override
public void render(com.google.gwt.cell.client.Cell.Context context, String value, SafeHtmlBuilder sb) {
if (value != null) {
MyWidget widget = new MyWidget(value);
sb.appendEscaped(widget.getElement.getInnerHTML());
}
}
Это работает, но есть ограничение:
- НЕ МОЖЕТ прикреплять любой обработчик непосредственно к вашему виджету (внешнему или внутреннему).
например:
widget.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
// Won't work!!!
}
});
или
widget.getMyTextBox().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
// Won't work!!!
}
});
Ответ 4
Некоторое время назад я столкнулся с подобной проблемой (пытался вставить собственный виджет в ячейку CellList), но, к сожалению, не нашел простого решения.
Как правило, вы можете реализовать определенный класс ячеек, расширяя AbstractCell или ActionCell. В этом случае вам придется переопределить метод render() и реализовать собственный рендеринг. Хороший пример приведен в классе AbstractCell javadoc.