0

我已经查看了多个示例,了解如何从数据源构造一个TreeTablefromContainer并仅添加在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;
}

}

我想生成一个网格,其中hours 被旋转到列标题中,并且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>我想将其转换为上述演示格式。

最好的方法是什么?

我有一些额外的功能要求。

  • 我希望能够在同一个表的只读视图和可编辑视图之间切换。
  • 我希望能够完成到数据源(例如,JPAContainerSource)的往返。
  • 我(最终)想要通过复合 id 的任何部分过滤项目。

我的挑战在于适应。我很理解这个简单的用例,我可以把列表简单地分解成 aBeanItemContainer并使用addNestedContainerPropertyand setVisibleColumns。将属性旋转到列中似乎让我很困惑。

4

1 回答 1

0

事实证明,这是一个考虑不周的问题。

出于数据输入的目的,可以使用 aBeanItemContainer并且让列包含hour来自组合的嵌套容器属性,而id不是 a TreeTable,使用Table具有commitStatus和的 a作为列。限制:您只能查询/提交一个and的数据。ecoMinecoMaxassetOwnerlocation

至于显示,如果您不想过滤一个assetOwnerlocation的数据,您可以hour按照最初描述的方式旋转信息。您可以将原始 bean 转换为另一个适合显示的 bean(每个小时都是它自己的列)。

于 2014-08-02T16:03:22.710 回答