这个章节讲的很详细,可以仔细看看,重点,其实最后所有的报表都转化为了html,所以和web端的交互, 即我们的项目中直接通过js获取里面的所有元素。
代码如下:
先引入finereport的js文件(这个文件是内置的,不用去找到放入项目,是内置的,切记)
<script type="text/javascript" src="<%=request.getContextPath()%>/ReportServer?op=emb&resource=finereport.js"></script>
然后在body中加入ifream
<iframe id="myframe" src="<%=request.getContextPath()%>/ReportServer?reportlet=szyb/insuredmgmt/grgl/p60ylbzcbpz.cpt" width="450" height="400" >
</iframe>
下面的js就可以实现调用里面的代码以及获取里面的元素了:
function test(){
//调用里面的打印方法,以及分页、跳转等等
document.getElementById('myframe').contentWindow.contentPane.printPreview();
//获得里面的参数 ,SFZH参数身份证号
var obj = document.getElementById("myframe").contentWindow.document.getElementsByName('SFZH');
alert(obj[0].value);
}
其实用jquery查找元素更加方便,如果需要的话,那么就需要映入jquery的js文件,,jquery的版本自己随意,我这里是1.7.2
<script type="text/javascript" language="javascript" src="<%=request.getContextPath()%>/basejs/jquery-1.7.2.js"></script>
//获取报表里面元素的值, 假设报表工具中加入了一个时间控件,名字叫JSNY,获取方法如下
//这里特别强调一下,如果报表工具中添加的是普通的文本框,那么直接var obj = document.getElementById("myframe").contentWindow.document.getElementsByName('SFZH');
这样就可以获取到了,如果是一些特殊控件,就要看实际的html元素代码了,这里的时间控件,并不是一个input ,而是一个div,所以这里我先找到div,再找到里面的input
function test1(){
var obj = $('#myframe').contents().find("[widgetname='JSNY']");
alert($(obj[0]).find(":text")[0].value);
}
附加一些在报表工具中可以用的js方法
//获得下拉控件中选中的索引
//获得下拉控件的值
var value = this.options.form.getWidgetByName("xlsj").options.data.records[a].data.text;
alert(value);
//万能的获取控件的值
//var value = this.options.form.getWidgetByName("xb").getValue();
//alert(value);