VR展现
用户可以在自定义的jsp页面中使用VR标签进行报表展现,并可通过指定标签属性控制报表展现的方式。
产品标签库文件viewReport.tld中包含了4组报表展现的标签,分别是:
- report:用于展现单个浏览式报表的一组标签。
- input:用于展现单个填报表的一组标签。
- group:用于展现报表组的的一组标签。
- html:为方便原使用V4的用户升级至V5,进行的标签兼容处理。可用于展现普通报表和填报表。
标签详细说明及介绍参见:报表展现标签与API->报表展现标签。
注意:使用html标签展现的报表仍通过数据库连接池的方式进行取数。不能使用数据管理中定义的数据源、数据集。使用其它VR标签展现的报表两种数据连接方式均可正常展现。
用法说明
用户可以根据VR用法说明手写JSP代码,也可以通过VRdemo页面生成展现源码的功能,设置好展现标签后,生成展现源码,将源码保存至JSP来进行报表展现。
VRdemo页面访问地址:http://localhost:8800/reportmis/mis2/vrsr/demo/vrDemo.jsp。
使用VR进行报表展现包含至少以下两步:1.声明标签库文件;2.调用报表展现标签进行报表展现。具体说明及示例代码如下:
声明标签库文件
声明标签库文件语句的格式如下所示:
<%@ taglib uri="/WEB-INF/viewReport.tld" prefix="view" %> 或 <%@ taglib prefix="report" uri="/viewTag"%>
此定义语句必须写在JSP的开头。uri为标签库文件路径及名称;prefix为指定tag标签前缀名。
- 文件路径
指定标签库文件及其路径有两种方式,直接指定和间接引用。
1、直接指定
<%@ taglib prefix="report" uri="/WEB-INF/tld/viewReport.tld"%>
2、间接引用
间接引用的方式需要先在web.xml中定义标签库文件的路径,然后在JSP中直接引用定义好的标签名即可。间接引用的好处在于当标签库文件存放路径改变时,只需要修改
web.xml中的定义,而不用需要修改每个jsp。
a.web.xml中定义格式如下:
<taglib>
<taglib-uri>/viewTag</taglib-uri>
<taglib-location>/WEB-INF/tld/viewReport.tld</taglib-location> </taglib>
b.在JSP中的引用格式如下:
<%@ taglib prefix="report" uri="/viewTag"%>
- 标签前缀名
prefix的值可以自己指定,但tag标签中的前缀必须与其保持一致。
调用标签发布报表
调用标签发布报表的代码格式如下:
<view:report name="report1" .../>
其中view为声明标签库文件时指定的prefix的值。report为标签组名称,根据要展现的报表类型来设置,浏览式报表为report;填报表表为input;报表组为group;具体参见本节开头。
在其后可以设置其它标签属性的值。其中name、srcType 两个属性为必须设置的属性。
- 如要发布的报表源为报表文件,srcType值为file。
- 如要发布的报表源为经过API处理的报表设计对象,srcType值为bean。
注:srcType为file时fileName为必填,srcType为defineBean时beanName为必填
可以通过VRdemo页面,设置标签属性后生成展现报表的JSP代码,来进行报表展现。具体标签属性及其详细说明参见:报表展现标签与API->报表展现标签 。
示例代码
<%@ taglib prefix="view" uri="/WEB-INF/tld/viewReport.tld"%>
<html>
<body style="margin: 0; width: 100%; height: 100%; overflow: auto;">
<view:report name="report1"
srcType="file"
fileName="/vrdemo/report.raq"
toolbarLocation="top"
/>
</body>
</html>
工具栏自定义
VR工具栏中包含的按钮如下图所示,按钮按区域进行存放。对整个工具栏、工具栏的某个区域、工具栏上的按钮都提供了控制和自定义修改的方法。默认工具栏包含的按钮及区域划分如下。
注意:工具栏自定义相关功能在SR中同样适用。
位置及按钮控制
可以通过标签来控制工具栏的显示位置及工具栏上包含的按钮。
例如:工具栏显示位置与是否显示通过标签toolBarLocation来控制,工具栏上的每个按钮的对应一个标签可以控制是否显示,如打印预览按钮是否显示可以通过needPrint标签来控制,具体标签及详细说明请参见:报表展现标签与API->报表展现标签。
添加自定义按钮
为方便用户在工具栏上添加一些自定义的按钮,提供了extendButtons标签属性,通过调用该标签属性,可以实现在默认工具栏添加自定义按钮。
自定义按钮的添加可参考 报表展现标签与API -> 工具栏的客户化 -> 方法与接口说明 。
外观及属性控制
方便用户对工具栏的外观及属性进行自定义的修改,预留了一些class。通过调用这些预留的class可以实现对整个工具栏、工具栏的指定区域、按钮的外观及属性控制。工具栏具体划分及各部分对应的class如下表所示:
toolbarClass控制方式的详细说明可参考 报表展现标签与API->工具栏的客户化->toolbarClass控制方式 。
JS调用
当客户需要将报表系统集成至业务系统中时,希望将报表打印、导出等功能加入到业务系统工具栏中或者重新定义一个工具栏来进行报表打印、导出等操作时,可以通过调用报表打印、导出、翻页等功能的JS方法来实现。
各功能具体的JS及调用方法说明如下:
- 调用方法
使用"对象名.name_function()"的格式进行调用
1、对象名:报表组和普通报表的对象名是不相同,普通报表的默认对象名为rptObj,报表组的默认对象名为:groupObj。
2、name:为标签中定义的name属性的值,例如:report1。
3、function():为具体的方法名。
-
详细说明
1、单个报表的功能按钮对应的JS调用方法如下:
功能 方法 打印 rptObj_report1.print() 直接打印 rptObj_report1.directPrint() 导出TEXT rptObj_report1.saveAsText() 导出excel rptObj_report1.saveAsExcel() 导出word rptObj_report1.saveAsWord() 导出pdf rptObj_report1.saveAsPdf() 填报提交 rptObj_report1.submit() 增加行 rptObj_report1.appendRow() 插入行 rptObj_report1.insertRow() 删除行 rptObj_report1.deleteRow() 导入excel rptObj_report1.importExcel() 翻页 rptObj_report1.getPage(pageNum) 当前页码 rptObj_report1.getPageNum()
2、报表组功能按钮对应的JS调用方法如下:功能 方法 打印 groupObj_report1.print() 导出TEXT groupObj_report1.saveAsText() 导出excel groupObj_report1.saveAsExcel() 导出word groupObj_report1.saveAsWord() 导出pdf groupObj_report1.saveAsPdf() 填报提交 groupObj_report1.submit() 增加行 groupObj_report1.appendRow() 插入行 groupObj_report1.insertRow() 删除行 groupObj_report1.deleteRow() 导入excel groupObj_report1.importExcel() - 示例代码
隐藏VR默认工具栏,定义一个包含打印和导出excel按钮并实现翻页功能的工具栏,工具栏按钮使用自定义图标。
<%@ taglib prefix="view" uri="/WEB-INF/tld/viewReport.tld"%>
<html>
<%
String appmap = request.getContextPath();
String excelImage = "<img src='" + appmap + "/images/excel.png' border=no >";
String nextImage = "<img src='" + appmap + "/images/next.png' border=no >";
String lastImage = "<img src='" + appmap + "/images/last.png' border=no >";
String preImage = "<img src='" + appmap + "/images/pre.png' border=no >";
String firstImage = "<img src='" + appmap + "/images/first.png' border=no >";
%>
<span onclick="rptObj_report1.saveAsExcel()"><%=excelImage%></span>
<span onclick="rptObj_report1.getPage(1)"><%=firstImage%></span>
<span onclick="getPrePageNew()"><%=preImage%></span>
<span onclick="getNextPageNew()"><%=nextImage%></span>
<span onclick="rptObj_report1.getPage(rptObj_report1.getPageCount())"><%=lastImage%></span>
<view:report name="report1" srcType="file"
fileName="/vrdemo/report.raq"
toolbarLocation="none"
needPage="yes"
needPageMark="yes"
width="600"
height="60"
/>
<script language="JavaScript" type="text/javascript">
function getPrePageNew(){
if(rptObj_report1.getPageNum()-1<1){
rptObj_report1.getPage(1);
}
else
rptObj_report1.getPage(rptObj_report1.getPageNum()-1);
}
</script>
<script language="JavaScript" type="text/javascript">
function getNextPageNew(){
if(rptObj_report1.getPageNum()+1>rptObj_report1.getPageCount()){
rptObj_report1.getPage(rptObj_report1.getPageCount());
}
else
rptObj_report1.getPage(rptObj_report1.getPageNum()+1);
}
</script>
</html>
VR监听类
VR监听类主要用于系统执行报表计算前、报表计算后分页前、报表分页后展现前、报表导出前进行业务处理的类,用户可以自行实现VR监听类,从而在报表计算前、报表计算后分页前、报表分页后展现前、报表导出前实现自己的业务处理。监听类的作用对象与报表运算过程的关系如下图所示
监听器类中可以使用session对象、request对象、response对象、报表运行环境对象、报表计算前后报表对象,因此可以检查用户登录信息、操作权限及其他信息,并可以在报表计算前后、分页后、导出前对报表对象进行操作。
VR监听类的具体使用说明可参考 报表展现标签与API->报表计算客户化 ->方法与接口说明 。
VR监听方法的示例可参考 报表展现标签与API -> 报表计算客户化 -> 场景示例 。
JS事件
当客户希望使用VR展现报表过程中时某些操作触发自定义的js事件,可以通过添加VR事件来实现。
客户添加VR事件,添加的事件方法会在对应时候触发。
VR中JS事件调用方法及详细说明如下:
调用方法:
VR展现时,传递参数jsFiles=js文件名。
在js文件中使用“rptObj_report1.bind('事件名称', 方法名称,this)”的格式对报表js事件进行调用。
在js文件中使用“groupObj_report1.bind('事件名称', 方法名称,this)”的格式对报表组js事件进行调用。
- 事件名称:报表组和普通报表的事件名称是不相同的,触发条件也不同,具体的事件名称会在下面详细说明。
- 方法名称:为标签中定义的js方法名,例如:test1。
详细说明:
报表:
事件名称 |
触发条件 |
calc |
计算报表后触发 |
getPage |
得到当前页html代码后触发 |
submit |
报表提交完成时触发 |
报表组:
事件名称 |
触发条件 |
calcSheet |
计算sheet页之后触发 |
getSheetHTML |
得到当前页html代码后触发 |
groupSubmit |
报表组提交完成时触发 |
Init |
|
示例代码:
rptObj_report1.bind('getPage', callBack_loadSuccess, this);