我有一个需要显示的java类的3个属性 在表格单元格中彼此相同。
将3个属性添加到绑定到表的容器中 - 然而,这导致每个属性占据不同的单元格 同一行。
e.g.
Container container = new IndexedContainer();
container.addContainerProperty("property1", String.class, "dftvalue1");
container.addContainerProperty("property2", String.class, "dftvalue2");
container.addContainerProperty("property3", String.class, "dftvalue3");
container.getContainerProperty(itemId, "property1").setValue("value1");
...
Table table = new Table("My Table");
table.setContainerDataSource(container);
我需要显示如下。
| property1 |
col1 | property2 |
| property3 |
请告知/建议如何做到这一点? 谢谢史蒂夫。
答案 0 :(得分:1)
您可以为此实施Table.ColumnGenerator
。然后创建
那里的细胞内容。内容可以是"任何" vaadin Component
。
使用例如Label
包含HTML内容和
用<br/>
连接你的道具(注意XSS!)。或者你也可以创建一个
垂直布局并为每个属性添加标签。
这样的事情:
def c = new BeanItemContainer<SomeBean>(SomeBean)
c.addAll([
new SomeBean(prop1: "prop11", prop2: "prop12", prop3: "prop13"),
new SomeBean(prop1: "prop21", prop2: "prop22", prop3: "prop23"),
new SomeBean(prop1: "prop31", prop2: "prop32", prop3: "prop33"),
])
setContent(new Table().with{
setContainerDataSource(c, [])
addGeneratedColumn("combined", {Table source, Object itemId, Object columnId ->
(source.getItem(itemId) as BeanItem<SomeBean>).bean.with{
// UNSAFE CODE! DON'T USE VERBATIM
new Label("$it.prop1<br />$it.prop2<br />$it.prop3", ContentMode.HTML)
}
})
setVisibleColumns(["combined"].toArray())
it
})