报表控件FineReport在报表中如何调用客户的js

 时间:2026-04-23 11:57:14

1、问题描述

两种情况:

1、报表嵌入在某个页面的iframe框架中,需要在报表模板中获取页面里面定义的方法;

2、报表嵌入在某个页面的iframe框架中,需要在报表模板中获取页面中另一个iframe里面的方法。

2、解决方案

首先通过js获取方法所在的对象,然后通过方法名调用:

情况1中页面对于模板来说是父,因此可以通过parent.window.fnname()调用父页面的方法;

情况2中通过父页面获取另一个iframe,再调用其中的方法:parent.window.getElementById("iframename").contentWindow.fnname()。

3、示例

前提准备

如下page1.html中,通过iframe嵌入了一张report报表及page2.html页面;在page1中定义了方法fun1:

<html>

  <head> 

    <title>page1</title>

<script type="text/javascript">

function fun1(){

alert("这是主页面中的方法!");

}

   </script>

  </head>

  <body>

这是page1

<iframe src="/WebReport/page2.html" name="page2" id="page2" ></iframe>

<iframe src="/WebReport/ReportServer?reportlet=report.cpt" name="report" scrolling="auto"></iframe>

  </body>

</html>

4、其中page2.html中也定义了一个方法fun2:

<html>

  <head> 

    <title>page2</title>

    <script type="text/javascript">

function fun2(){

var name = alert("这是嵌在另一个iframe中页面里的方法!")

}

   </script>

  </head>

  

  <body>

    这是page2!

  </body>

</html>

5、 在模板中调用客户自己的js方法

如在report.cpt模板的参数界面提交按钮点击事件中,获取页面page1及page2中的方法,js如下:

var page1 = parent.window;

page1.fun1();

var page2 = page1.document.getElementById("page2").contentWindow;

page2.fun2();

  • web报表控件FineReport中如何实现国际化报表
  • 报表控件FineReport如何在权限中使用session
  • web报表控件FineReport中如何优化报表取数
  • 报表控件FineReport中报表如何嵌入到.net系统
  • 报表控件FineReport中数据集中的排序
  • 热门搜索
    杭州旅游指南 北京春节旅游攻略 洛阳旅游网官网 长沙旅游地图 雁鸣湖旅游度假村 意大利旅游地图 广西南宁旅游景点 西山旅游 5.19中国旅游日 重庆主城区旅游景点