Posted on 2012-09-06 23:19
FineReport——报表技术领跑者 阅读(2530)
评论(0) 编辑 收藏 所属分类:
Java报表使用心得
以下情况是我的学习FR中自己遇到的问题:
1.在制作模板时,如何将报表中的值传递到超链接网页呢?
在项目中以frame方法把F1.CPT放到项目的页面中,对F1.CPT做网络报表超链接F2.CPT,然后在F2.cpt页面中,做个超链接的网页,超链接的URL里面输入地址,并在下面输入要传递的参数名和参数值,然后在网页中通过request.getParameter("超级链接中的参数名")获取参数就可以直接使用了。
2.一个模板的2个sheet之间的取值和校验?
在某个单元格里直接输入=sheetname!cellname 来实现跨sheet取值,eg:=sheet2!A2 就是sheet2表单的A2单元格的值,校验同样原理。
3.下拉框的选值发生变化:
在下拉框里设置好数据源,显示值和实际值,但在选中某个值之后却发现选中的值变为了实际值了,在这里需要在这个单元格的样式里重新把数据源再设置一遍就可以了。
4.超链接传值,如何动态的传别的对应单元格(一一对应的单元格)的值?
在超链接中,正常传递参数eg: PKID='${PKID}',然后在右边的参数栏里添加参数PKID,其值选择公式,协商你要传递的值的 单元格
5.JS取值失败:
在用JS GetCellValue取值的时候会发现取值不对,或者为空。这有可能是因为你要取值的单元格是在某个扩展行的后面了,所以导致单元格的位置发生了变化,所以尽量要在扩展行的上面放置你JS要取的值。
6.报表的的端口:
FR自身有一个端口8075,但我们在使用的过程中一般都不会用8075作为FR的端口来使用,通常和TOMCAT之类的服务结合起来使用。
7.数据混乱,不是一一对应的:
首先检查数据库看数据是不是一一对应的,如果没错,那可能是单元格的左父格设置问题,建议自己多做几张实践下就会明白左父格的含义。
8.模拟GridView的一些功能可以去看下面的连接:
http://bbs.finereport.com/thread-14558-1-1.html
9.批量导出报表:
http://localhost:8079/WebReport/ReportServer?reportlets=({reportlet:/FRTable501.cpt},{reportlet:/FRTable601.cpt})&format=excel&__filename__=name 但该功能在导出13张报表的时候就会出错。
10.点击页面弹出子页面,按钮的点击事件
FR.showIframeDialog({
url:"ReportServer?reportlet=SMES/NewAdd.cpt&op=write",
title:"title",
width:600,
height:600
})
或者
FR.showDialog("测试", 400, 400, "<div> <iframe id='reportFrame' style='width:100%;height:350px' src='http://localhost:8075/WebReport/ReportServer?reportlet=SMES/NewEdit.cpt&op=write&KID=${CopID}'> </iframe></div>", {collapsible:true});
11.子页面刷新父页面
在父页面做个按钮,ID为btnRefresh 点击事件为:location.reload();
在子页面的填报成功事件里写:
var top = window.parent;
var reportPane = top.contentPane;
var btn = reportPane.curLGP.write.getWidgetByName("btnRefresh");
btn.fireEvent("click");
12.另外大家在画模板的时候,特别是对一些表格的制作方面,最好是每个单元格都是合并的单元格,这样以备后来的修改方便。如果每个数据都仅占用一个单元格,后期需要发生变化 就会给修改表格的样式带来麻烦。