Birt - 报表参数的使用配置说明(5)

2019-04-15 14:41

图 24. 数据集参数绑定

至此,nested table的创建过程完成,我们可以通过选择preview视图查看报表的输出结果如图25所示。

图 25. 程序执行结果

4.2 使用Scripted Data Sets

本小节中将介绍如何使用两个Sripted Dataset实现nested table。 仍然以customer和order为例,并以CustomerName作为关联外键。

第一步创建数据集。 首先创建一个Scripted Data Source,然后以此创建两个数据集CustomerSet和OrderSet,在CustomerSet中创建两列CustomerNo和 CustomerName,在OrderSet中创建三列OrderSet、Content和CustomerName。 最后为OrderSet创建一个DataSet Parameter CName,Data Type为String,Direction为Input,Default Value为任意整数,如图26所示。

图 26. OrderSet的数据集参数CName

第二步在报表界面上创建外层表(OuterTable)和内嵌表(InnerTable),并设置与其绑定的Dataset分别为CustomerSet和OrderSet,步骤与4.1小节类似。 然后为InnerTable创建Dataset parameter binding,设置参数CName的value为row[“CustomerName”]。

由于我们使用的是Scripted Data Set,因此在本例中我们需要使用Birt Sript构造一些数据,并实现数据集的数据获取。 首先,在报表的beforeFactory方法中构造数据,代码如下所示。

报表的beforeFactory方法

importPackage( Packages.java.util ); importPackage( Packages.java.lang ); var outerMap = new Hashtable(); var innerMap = new Hashtable(); var customer = new Array(2); for(var i=0;i<2;i++) { var array = new Array(2); array[0] = \

array[1] = \ customer[i] = array; }

outerMap.put(1, customer[0]); outerMap.put(2, customer[1]); var order = new Array(5); for(var i=0;i<5;i++) {

var array = new Array(2); array[0]=i;

array[1]=\ order[i]=array; }

var orderList1 = new ArrayList(); orderList1.add(order[0]); orderList1.add(order[1]);

var orderList2 = new ArrayList(); orderList2.add(order[2]); orderList2.add(order[3]); orderList2.add(order[4]);

innerMap.put(customer[0][1], orderList1); innerMap.put(customer[1][1], orderList2);

reportContext.setPersistentGlobalVariable(\reportContext.setPersistentGlobalVariable(\

然后,为CustomerSet和OrderSet添加script代码。

CustomerSet的open方法代码如下所示。

CustomerSet的open方法

outerMap = reportContext.getPersistentGlobalVariable(\iter = outerMap.entrySet().iterator();

CustomerSet的fetch方法代码如下所示。

CustomerSet的fetch方法

if( iter.hasNext() ) {

customer = iter.next().getValue(); row[\row[\return true; } else {

return false; }

OrderSet的open方法代码如下所示,其中inputParams[“CName”]就表示了绑定的Detaset parameter CName的值。

OrderSet的open方法 i = 0;

customerName = inputParams[\

iMap = reportContext.getPersistentGlobalVariable(\orderList = iMap.get(customerName);

OrderSet的fetch方法如如下所示。

OrderSet的fetch方法

if (orderList == null) return false;

if (i < orderList.size()) { order = orderList.get(i);


Birt - 报表参数的使用配置说明(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:H3C S7500E 产品对外测试手册(VRRP)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: