我有一个带有2列的小单元,名字和他拥有的汽车。其中一列(汽车)必须是列表框。 person对象将在单元格中呈现为一行。列表框将显示该人拥有的汽车的名称。 让我们说,
Person jack has 3 cars(Merc, BMW, Honda) Person jill has 2 cars(Mini Cooper, Toyota Rav4)
我看过这个展示,它实现了一个固定类别的下拉列表。但我所拥有的是一个下拉列表,其内容将取决于Person对象的内容。
我还希望在用户选择下拉列表中的某辆车时捕获该事件。 任何想法如何做到这一点?
答案 0 :(得分:0)
AFAIK CellWidgets
不提供支持动态列表的单元格类型。
但是,您可以通过派生AbstractCell
来实现自己的自定义单元格,并自行实现功能。请参阅GWT文档了解更多infos。
我会尽量避免从自定义单元格内部进行后端调用。
如果可能,请尝试在DTO中添加可用类型列表,然后从render
方法访问该属性。这些方面的东西:
public class DynamicSelectionCell extends AbstractCell<MyDTO> {
@Override
public void render(Context context, MyDTO value, SafeHtmlBuilder sb) {
if (value == null) {
return;
}
// render a selectionbox and dynamically add options by accessing the value.getAvailablOptions()
}
}
为您的MyDTO
对象添加一个getter,返回特定记录的可用类型(Honda等),并在render方法中创建一个选择框。
您可以查看SelectionCell如何正确呈现它的代码。
关于事件处理,您必须实现onBrowserEvent
。有关详细信息,请参阅here。