我已经审核了多个示例,了解如何从TreeTable
数据源构建Container
,只添加迭代Object[][]
的项目。我仍然被我的用例困住了。
我有一个像这样的豆......
public class DSRUpdateHourlyDTO implements UniquelyKeyed<AssetOwnedHourlyLocatableId>, Serializable
{
private static final long serialVersionUID = 1L;
private final AssetOwnedHourlyLocatableId id = new AssetOwnedHourlyLocatableId();
private String commitStatus;
private BigDecimal economicMax;
private BigDecimal economicMin;
public void setCommitStatus(String commitStatus) { this.commitStatus = commitStatus; }
public void setEconomicMax(BigDecimal economicMax) { this.economicMax = economicMax; }
public void setEconomicMin(BigDecimal economicMin) { this.economicMin = economicMin; }
public String getCommitStatus() { return commitStatus; }
public BigDecimal getEconomicMax() { return economicMax; }
public BigDecimal getEconomicMin() { return economicMin; }
public AssetOwnedHourlyLocatableId getId() { return id; }
@Override
public AssetOwnedHourlyLocatableId getKey() {
return getId();
}
}
AssetOwnedHourlyLocatableId
是复合ID。它看起来像......
public class AssetOwnedHourlyLocatableId implements Serializable, AssetOwned, HasHour, Locatable,
UniquelyKeyed<AssetOwnedHourlyLocatableId> {
private static final long serialVersionUID = 1L;
private String location;
private String hour;
private String assetOwner;
@Override
public String getLocation() {
return location;
}
@Override
public void setLocation(final String location) {
this.location = location;
}
@Override
public String getHour() {
return hour;
}
@Override
public void setHour(final String hour) {
this.hour = hour;
}
@Override
public String getAssetOwner() {
return assetOwner;
}
@Override
public void setAssetOwner(final String assetOwner) {
this.assetOwner = assetOwner;
}
}
我想生成一个网格,其中hour
被转移到列标题中,location
是唯一的其他列标题。
如,
Location 1 2 3 4 5 6 ... 24
将是列标题。
在每个列的下方,您可能会看到......
> L1
> Commit Status Status1 .... Status24
> Eco Min EcoMin1 .... EcoMin24
> Eco Max EcoMax1 .... EcoMax24
> L2
> Commit Status Status1 .... Status24
> Eco Min EcoMin1 .... EcoMin24
> Eco Max EcoMax1 .... EcoMax24
所以,如果我提供List<DSRUpdateHourlyDTO>
,我想将其转换为上述演示文稿格式。
最好的方法是什么?
我还有一些额外的功能要求。
我的挑战在于适应。我很清楚这个简单的用例,我可以将其列入BeanItemContainer
并使用addNestedContainerProperty
和setVisibleColumns
。将属性转换为列似乎是让我感到难过的。
答案 0 :(得分:0)
事实证明这是一个构思错误的问题。
出于数据输入的目的,可以使用BeanItemContainer
并使列包含来自复合hour
的嵌套容器属性id
而不是TreeTable
,使用Table
,commitStatus
和ecoMin
作为列的ecoMax
。限制:您只能查询/提交一个assetOwner
和location
的数据。
对于显示,您无需过滤一个assetOwner
和location
的数据,您可以将hour
信息转换为原始数据描述。您可以将原始bean转换为适合显示的另一个bean(每小时都是自己的列)。