决策报表中,通过下拉框实现模糊查询,利用报表块实现查询的点击,以及清除查询的内容

image.png

查询和清除查询需要在报表块中进行操作,并且需要下拉框查询前不展示报表块内容,查询和清除查询类似一个按钮,点击查询时可以看到你所需要的数据,清除查询回到刚进去时页面。

FineReport hehe1100 发布于 2021-1-12 15:24
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
luojian0323Lv7资深互助
发布于2021-1-13 08:33

真有意思啊,

下拉框查询前不显示报表块内容,那下拉框怎么执行查询,如果下拉框自动查询,那还要报表块中的查询,和清除查询

有何用?

最佳回答
0
cuiyuepingLv5见习互助
发布于2021-1-13 14:51(编辑于 2021-1-13 15:13)

直接在决策报表的报表块中是不能拖动下拉框和按钮的,可实现需求的方法如下:

第一步:

在需要增加查询区域的报表上方增加一个绝对画布,按需求拖动相关的查询条件输入下拉框和普通的按钮,一个查询,一个清空。将下拉框的组件名称重命名,例如姓名参数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


  • yzmFsGfe1206690 yzmFsGfe1206690 这种JS设置参数的方式,并不能够直接设置数据集里的参数吧?即使名称一样也无法设置啊
    2022-12-24 17:08 
  • 3关注人数
  • 649浏览人数
  • 最后回答于:2021-1-13 15:13
    请选择关闭问题的原因
    确定 取消
    返回顶部