直接在决策报表的报表块中是不能拖动下拉框和按钮的,可实现需求的方法如下:
第一步:
在需要增加查询区域的报表上方增加一个绝对画布,按需求拖动相关的查询条件输入下拉框和普通的按钮,一个查询,一个清空。将下拉框的组件名称重命名,例如姓名参数p_name,注意不是标签名称,一定要和第二步中的,即报表块的数据集的参数名称一致。然后参考文档
https://help.fanruan.com/finereport/doc-view-3230.html?source=4
此时实现点击查询按钮后显示模糊查询的结果,但是如果数据集只是简单的select语句,此时会在报表块中显示所有的记录。
第二步完善一下:
实现在下拉框查询前不展示报表块内容,数据集中设置根据传入参数的长度进行判断,如果参数p_name为空检索不到信息,否则模糊查询。sql语句例如:SELECT * FROM 雇员 where 姓名 like'%${if(len(p_name)=0,-1,p_name)}%'。
第三步完成清空按钮的操作:
在清空按钮事件里编辑点击事件的js:
//清空查询输入下拉框的值的方法1:
//this.options.form.getWidgetByName("p_name").setValue("");
//this.options.form.getWidgetByName("p_name").setText("");
//this.options.form.getWidgetByName("p_name").reset();
//清空查询输入下拉框的值的方法2:
//_g().getWidgetByName("p_name").reset(); //获取报表主体控件值
//清空查询输入下拉框的值的方法3,此方法可以一次性清空所有控件值:
$.each(this.options.form.name_widgets, function(i, item) {
if(item.options.type !== 'label'||item.options.type !== 'button') {
item.setValue("");
item.setText("");
item.reset();
}
});
//重新将参数赋值为空进行一次查询,相当于回到刚进去时页面
this.options.form.getWidgetByName("report3").gotoPage(1,"{p_name:''}",true);
效果如下:
demo.mp4