我正在尝试对已按 pId 分组的现有数据集进行排序。我尝试了sortField,但它是在摸索之前应用的,实际上,期望的是先groupBy然后sort。
这是我的 subDataSet 和 datasetRun:
<subDataset name="currentDuesDataSet" uuid="c3f7bf4a-f29f-4ea2-82ec-16e32eb83f03">
<field name="cId" class="java.lang.String"/>
<field name="mId" class="java.lang.Integer"/>
<field name="pId" class="java.lang.Integer"/>
<field name="nameFirst" class="java.lang.String"/>
<field name="chaser" class="java.lang.String"/>
<field name="pName" class="java.lang.String"/>
<field name="nameLast" class="java.lang.String"/>
<field name="totalPremium" class="java.lang.Double"/>
<variable name="totalPremiumCost" class="java.lang.Double" resetType="Group" resetGroup="RECORDS_PER_PURCHASER" calculation="Sum">
<variableExpression><![CDATA[$F{totalPremium}]]></variableExpression>
</variable>
<group name="RECORDS_PER_PURCHASER">
<groupExpression><![CDATA[$F{pId}]]></groupExpression>
</group>
</subDataset>
<datasetRun subDataset="currentDuesDataSet" uuid="c211cfad-9404-4469-af7d-e4b2df7ba716">
<dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{list})]]></dataSourceExpression>
</datasetRun>
尝试参考:
https://community.jaspersoft.com/jasperreports-library/issues/4807
感谢提前回复。
如果您想在添加排序字段时保留组,则必须在所需排序字段之前添加组值的排序字段。
所以你会有这样的东西:
<sortField name="pId"/>
<sortField name="fieldToBeSortedOn"/>
请注意,这将导致数据按 pId 排序(如果尚未排序)。