历史版本3 :JS实现使用填报页面的控件查询 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 问题描述编辑

在设计报表的过程中,有部分需求需要使用填报控件来实现查询的功能,如下面的示例下拉框选择地区后列表自动过滤显示所选地区的数据,该如何实现?

222

2. 实现思路编辑

在参数界面设置隐藏的地区下拉框控件,在填报的下拉框控件的编辑后事件中将当前控件的值赋值给参数界面的地区控件,并执行查询。

3. 示例编辑

3.1 新建数据集

新建数据集ds1为:SELECT * FROM 销量 where 1=1 ${if(len(area)==0,"","and 地区='" + area + "'")} 。

3.2 设计模板

将数据集的字段拖入单元格中,并添加一个选择地区的下拉框,如下图:

222

3.3 报表参数设置

点击模板>模板参数,添加一个报表参数:area。
222

3.4 设置参数界面

参数界面中添加一个下拉框控件,控件名为area,并设置控件不可见。
222

点击参数界面空白处,不勾选“点击查询前不显示报表内容”。
222

将鼠标放到参数面板的下边框出现双向箭头,按住鼠标左键拖动至顶端,将参数面板的高度设置为0。

注:当参数面板中有控件时,预览报表默认会显示一个向下的三角按钮,可通过JS隐藏参数界面向上向下的三角按钮。

3.5 设置填报控件

右键单元格中添加的下拉框控件,点击控件设置,设置下拉框控件名为area。
222
设置下拉框数据字典为销量表中的地区字段。

222
点击事件编辑,添加编辑后事件,并输入下面的JavaScript代码:

222

/*获取单元格C2选择的地区控件的值*/ var area1=contentPane.getWidgetByName("area").getValue(); /*获取参数面板中的文本控件*/ var area2=contentPane.parameterEl.getWidgetByName("area"); /*给参数界面中的文本控件赋值*/ area2.setValue(area1); /*执行查询*/ _g().parameterCommit();
3.6 保存并预览

保存模板,点击填报预览即可看到上面的示例效果。