codecamp

6.2.在业务页面中使用报表

前面,我们了解了如何将一个编译好的报表文件上传到BDF2系统当中,介绍如何配置报表运行时所需要的参数及相关资源文件,同时演示了如何对上传上来的报表进行预览操作等,这里我们来看看如何在我们的业务页面当中使用一个已经编译好的或一个已上传到BDF2系统当中的报表。

在BDF2-JASPERREPORTS模块当中,为了方便大家将报表应用到我们的业务界面当中,我们提供了一个名为JasperreportsExporter标准的Dorado7组件,它可以实现将定义的报表(已经编译好的或一个已上传到BDF2系统当中的报表)导出成我们需要的各种格式。要在view当中看到这个组件,当然就是更新规则,采用在线方式更新规则,更新完成之后,打开一个view文件,可以在右侧工具栏中看到如下图所示的JasperreportsExporter组件图标:

JasperreportsExporter组件可以设置的属性如下表所示:
属性名
类型
默认值
描述
fileSource
String
uploadedFile
要使用的报表来源,可选值有两个,分别是uploadedFile和file。uploadedFile表示文件来自于我们通过报表定义与配置中定义的报表;file则表示一个位于服务端某目录下的一个jasper文件。
reportFile
String
要使用的报表文件,这个属性的值为fileSource属性决定。当fileSource属性值为uploadedFile时,这个属性值必须是一个通过
报表定义与配置中定义的报表的ID,而不能是其它;如是fileSource属性值为file时,这里定义的是一个位于服务端某目录下的一个jasper文件地址,比如D:\report\testReport.jasper
dataSourceType
String
有三个值可选,分别是:Jdbc、Map和JavaBean,这个属性的作用是定义当前报表采用的数据源类型。当fileSource属性值为uploadedFile时将忽略这个属性值。
dataSourceProvider
String
Jdbc
根据dataSourceType属性的值,来决定采用哪个数据源,如果dataSourceType值为Jdbc,那么这个属性需要选择一个数据源名称;如果dataSourceType值为Map或JavaBean这里需要定义一个实现了IReportDataProvider接口且配置到Spring当中的bean的id。详情见报表定义与配置中相关描述。当fileSource属性值为uploadedFile时将忽略这个属性值。
parameter
dorado.util.Map
用于设置报表设计中需要使用的参数信息。某些情况下,我们的报表当中用到的参数可能需要从当前业务页面当中获取,通过这个参数就可以实现该功能,在下面的测试JS代码当中,我们定义的报表需要外部传入一个名为jobId的参数以决定报表需要展示的业务数据的数量,那么我们的代码就可以通过下面的方式动态填充一个jobId参数:
报表组件通过JS填充参数示例
var
report=view.id("jasperreportsExporter1");
var p=new
dorado.util.Map();
p.put("jobId","bbb");
report.set("parameter",p);
report.execute(
)
当然,除了像上述那样进行JS动态配置外,还可以直接通过IDE为该组件的parameter参数赋值,具体方法与Dorado7其它组件的parameter赋值方法相同,赋值完成后,同样可以实现上述JS功能。
在IDE中为组件定义参数时注意事项
当采用报表组件来展现我们定义在报表管理界面当中上传的报表,且需要在IDE当中重新定义对应的报表所使用的参数时,那么需要将该报表在报表管理界面当中定义的对应参数删除(如果有定义的话),否则我们在IDE当中定义的报表参数将不起作用。
报表定义完成之后,要将报表导出成我们需要的格式,还需要执行JasperreportsExporter组件execute方法。

6.1.报表定义与配置
6.3.配置JasperRep
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }