ireport 交叉报表(转)
关键字: ireport
jasperReports1.1.1增加了对交叉报表的支持,下午看了下它的三个例子.暂时记下收获:
一直对交叉报表的具体定义不太明了.个人理解是报表的行和列都是从数据库中读去的而不是
普通那种列固定行是从数据库中读取(这里的数据源不一定是来自关系数据库).
crosstab 的dtt定义为:
<!ELEMENT crosstab (reportElement, crosstabParameter*, parametersMapExpression?, crosstabData
set?, rowGroup*, columnGroup*, measure*, crosstabCell*, whenNoDataCell?)>
<!ATTLIST crosstab
isRepeatColumnHeaders (true | false) "true"
isRepeatRowHeaders (true | false) "true"
columnBreakOffset NMTOKEN "10"
>
crosstabParameter:是交叉表中要用到的参数
如下:
<crosstabParameter name="Country" class="java.lang.String">
<parameterValueExpression>$F{ShipCountry}</parameterValueExpression>
</crosstabParameter>
这个就是把总表的一个域定义到交叉表的一个参数Country,这样在交叉表的数据集的查询或其
他地方就可以使用这个参数了
交叉表的参数定义:
<crosstabParameter name="Country" class="java.lang.String">
<parameterValueExpression>$F{ShipCountry}</parameterValueExpression>
</crosstabParameter>
这里定义了 一个参数Country,他的来源是主表的ShipCountry域.
crosstabDataset:交叉表允许有自己的数据集
如下:
<crosstabDataset>
<dataset>
<datasetRun subDataset="Country_Orders">
<datasetParameter name="Country">
<datasetParameterExpression><![CDATA[$F{ShipCountry}]]></datasetParameterExpression>
</datasetParameter>
</datasetRun>
</dataset>
</crosstabDataset>
评论0