我正在使用 CellTable 来显示我的记录,但现在我想在用户单击单元格时显示一个选择框。还有一件事是选择框是我自己的小部件,而不是预定义的。你能建议我这样做的任何方法吗?
问问题
17929 次
5 回答
24
GWT google group 上有一篇帖子讨论了答案。基本上,您可以正常创建自定义小部件,并在渲染函数中使用 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());
}
}
于 2011-03-17T12:33:45.227 回答
10
这是一种反模式。单元格的全部目的是让您没有小部件:您应该直接在单元格中“渲染” html。
于 2011-05-06T21:24:02.280 回答
7
GWT google group 上有一篇帖子讨论了答案。基本上,您可以正常创建自定义小部件,并在渲染函数中使用 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!!!
}
});
于 2013-03-12T14:38:07.863 回答
3
前段时间我遇到了类似的问题(尝试将自定义小部件插入 CellList 单元格),但不幸的是没有找到简单的解决方案。
通常,您可以实现特定的单元类,扩展AbstractCell或ActionCell。在这种情况下,您将不得不重写 render() 方法并实现您自己的渲染。AbstractCell 类 javadoc给出了很好的例子。
于 2011-01-29T07:58:15.743 回答
0
我认为@Kel 给出了最接近的答案,我使用了他的答案,我发现ActionCell
可以使用IdentityColumn
并且CellTable
可以使用IdentityColumn
ActionCell<MyEntity> refreshCell = new ActionCell<>("Refresh", new ActionCell.Delegate<MyEntity>() {
@Override
public void execute(MyEntity entity) {
//bla bla bla
}
});
IdentityColumn<MyEntity> refreshColumn = new IdentityColumn<>(refreshCell);
cellTable.addColumn(refreshColumn, "Refresh");
于 2020-12-12T21:26:22.337 回答