1. 概述
1.1 问题描述
在决策报表中,用户通过点击按钮给报表中报表块或图表块传递参数,类似于在普通报表单元格中添加「超链接>动态参数」实现的效果。如下图所示:

1.2 实现思路
给按钮添加「点击」事件,通过点击事件将参数值传递给对应的报表块或图表块。可以通过改变报表的参数值,即动态参数的思路实现,也可以不改变报表的参数值,给对应的报表块或图表块传递参数值。
2. 示例-修改全局参数
通过 JS,直接改变报表中相关参数的参数值,报表画面呈现参数值对应的内容。
2.1 准备数据集
新建一个决策报表,新建数据集 ds1,SQL语句为:SELECT * FROM 销量 where 地区='${area}',其中有一个数据集参数 area ,如下图所示:

2.2 设计报表
1)在 body 中添加两个「按钮控件」和一个报表块,「按钮控件」名称分别为华东、华北,如下图所示:

2)将 ds1 数据集字段拖入报表块单元格中,设计单元格样式,如下图所示:

最终 body 布局如下图所示:

2.3 添加点击事件
1)选中华东「按钮控件」button0,为其添加一个「点击」事件,事件需要添加两个参数。如下图所示:

参数值如下表所示:
| 参数 | 值 | 
|---|---|
| session | sessionID | 
| area | 华东 | 
JavaScript 代码如下:
//给参数area赋值,向服务器调取数据的时候,实现调取部分数据的刷新
$.ajax({
	url: '/webroot/decision/view/form?op=fr_dialog&cmd=parameters_d',
	type: 'POST',
	data: {
		"area": area //给area参数赋值
	},
	headers: {
		sessionID: session
	},
	complete: function(res, status) {
		if (window.FR && FR.Chart && FR.Chart.WebUtils) {
			FR.Chart.WebUtils.clearCharts();//清除图表内容
		}
		_g().loadContentPane();//加载报表内容
	}
});
2)同样的方法,为华北「按钮控件」添加「点击」事件。如下图所示:

参数值如下表所示:
| 参数 | 值 | 
|---|---|
| session | sessionID | 
| area | 华东 | 
JavaScript 代码如下:
//给参数area赋值,向服务器调取数据的时候,实现调取部分数据的刷新
$.ajax({
	url: '/webroot/decision/view/form?op=fr_dialog&cmd=parameters_d',
	type: 'POST',
	data: {
		"area": area //给area参数赋值
	},
	headers: {
		sessionID: session
	},
	complete: function(res, status) {
		if (window.FR && FR.Chart && FR.Chart.WebUtils) {
			FR.Chart.WebUtils.clearCharts();//清除图表内容
		}
		_g().loadContentPane();//加载报表内容
	}
});
2.4 效果预览
保存模板,点击「PC端预览」,效果如下图所示:

注:不支持移动端。
3. 示例-传递参数值
不改变报表的参数值,通过JS,给对应的报表块或图表块传递参数值。
3.1 准备数据集
新建一个决策报表,新建数据集 ds1,SQL语句为:SELECT * FROM 销量 where 地区='${area}',其中有一个数据集参数 area ,如下图所示:

3.2 设计报表
1)在 body 中添加两个「按钮控件」、一个报表块、一个饼图图表。如下图所示:

2)「按钮控件」名称分别为超链接-报表块、超链接-图表,将 ds1 数据集字段拖入单元格中,设计报表样式,如下图所示:

3)饼图「数据」如下图所示设置:

3.3 添加点击事件
1)选中超链接-报表块「按钮控件」button0 ,为其添加一个「点击」事件,事件需要添加一个参数 area,值为华北。如下图所示:

JavaScript 代码如下:
//传递参数,刷新报表块
_g().getWidgetByName('report0').gotoPage(1, {
"area": area
}, 'T');
2)同样的方法,为超链接-图表「按钮控件」button1 添加「点击」事件,事件需要添加一个参数 area,值为华北。如下图所示:

JavaScript 代码如下:
//给图表块传参
FR.Chart.WebUtils.changeParameter(
	'chart0', {
		"area": area,
	}
);3.4 效果预览
保存模板,点击「PC端预览」,效果如下图所示:

注:不支持移动端。
4. 模板下载
修改全局参数示例
已完成的模板,可参见:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\JS\表单JS实例\28-js实现超链接-动态参数.frm
点击下载模板:28-js实现超链接-动态参数.frm
传递参数值示例
已完成的模板,可参见:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\JS\表单JS实例\28-js实现超链接-当前表单对象.frm
点击下载模板:28-js实现超链接-当前表单对象.frm

 
  
  	 
             
            