Mam wygenerować raport w pdf. Z backendu dostaję jsona, mniej więcej taka idea:
{
"name": "JOHNY",
"lastLane": "BRAVO",
"financialProductList": [
{
"fundName": "SP500",
"quanity": 2,
"price": 123.21
"totalValue": 12312
"dividend": 10,
"interest": 1000
},
...
]
}
Tak mniej więcej może wyglądać pełny rząd. Jego wysokość może się zmieniać gdy Dividend, Interest będą =0, wtedy te linijki wypadają.
Chce osiągnąć taki efekt żeby móc zrobić tabelke z"financialProductList", z tym że wysokość rzędu może być różna - zawiera mniej linijek gdy np dividend albo interest są równe 0.
Zrobiłem coś takiego że w danej linijce gdy dana wartość jest pusta to jest usuwana, i linijki niżej wchodza na jej miejsce.
Nie działa to do końca ponieważ cały rząd (detailCell) swojej wysokości nie zmienia i zostają białe plamy.
Mniej więcej coś takiego:
<jr:column width="80">
<property name="com.jaspersoft.studio.components.table.model.column.name" value="Column3"/>
<jr:detailCell height="75">
<textField>
<reportElement x="0" y="0" width="80" height="25"/>
<textFieldExpression><![CDATA["Text Field"]]></textFieldExpression>
</textField>
<textField isBlankWhenNull="true">
<reportElement x="0" y="25" width="80" height="25" isRemoveLineWhenBlank="true">
<printWhenExpression><![CDATA[$F{dividend}.compareTo(BigDecimal.ZERO) != 0]]></printWhenExpression>
</reportElement>
<textFieldExpression><![CDATA[$F{dividend}]]></textFieldExpression>
</textField>
<textField isBlankWhenNull="true">
<reportElement x="0" y="50" width="80" height="25" isRemoveLineWhenBlank="true">
<printWhenExpression><![CDATA[$F{amount}.compareTo(BigDecimal.ZERO) != 0]]></printWhenExpression>
</reportElement>
<textFieldExpression><![CDATA[$F{amount}]]></textFieldExpression>
</textField>
</jr:detailCell>
</jr:column>
Wiecie jak coś takiego zrobić żeby wysokość detailRow w tabeli zmieniała się dynamicznie?