我在Vaadin 7.7上,我将表格切换到网格。只有我不能按照自己的意愿个性化我的细胞。在这里,我想在arraylist的列中添加组合框并检索所选的值。
以下是我的一些代码:
这里我创建了我的IndexedContainer
IndexedContainer indexedContainer = new IndexedContainer();
indexedContainer.addContainerProperty("Type de véhicule",String.class,"");
我在这里添加我的项目:
indexedContainer.addItem(listValue);
indexedContainer.getContainerProperty(listValue,
key.get(0)).setValue(
String.valueOf(listValue.get(0)));
最后,我将对象设置为可编辑,并使用此功能在备份期间执行操作:
grid.getEditorFieldGroup().addCommitHandler(new FieldGroup.CommitHandler() {
@Override
public void preCommit(FieldGroup.CommitEvent commitEvent) throws FieldGroup.CommitException {
}
@Override
public void postCommit(FieldGroup.CommitEvent commitEvent) throws FieldGroup.CommitException {
如果您有任何想法或建议,请不要犹豫:)
晚安
答案 0 :(得分:0)
您可以使用以下内容:
List<String> values = obtainValues();
IndexedContainer container = new IndexedContainer();
//Add other properties...
container.addContainerProperty("comboBox", ComboBox.class, null);
//Do more stuff
ComboBox cb = new ComboBox();
cb.addItems(values);
item.getItemProperty("comboBox").setValue(cb);
并且,在网格声明中,您可以使用允许网格渲染组件的addon。
Grid grid = new Grid();
//Even more stuff
grid.setContainerDataSource(container);
grid.getColumn("comboBox").setRenderer(new ComponentRenderer());
获取comboBox的值:
Item item = container.getItem(itemId);
ComboBox cb = item.getItemProperty("comboBox").getValue();
String value = (String) cb.getValue();
答案 1 :(得分:-1)
试试这个:
grid.getColumn("state").setEditorField(getComboState());
其中getComboState是:
private Field<?> getComboState() {
ComboBox comboBox = new ComboBox();
comboBox.addItem("approve");
comboBox.addItem("no-approve");
comboBox.setImmediate(true);
comboBox.setNullSelectionAllowed(false);
return comboBox;
}