数组函数应用实例-枚举下拉多选过滤

3831
2

yangqh 数据老手Lv5

发表于2019-9-19 13:53

楼主
需求场景:枚举下拉参数有多个下拉项,每个可选项都对应不同的主题表字段上的过滤条件,允许可多选,多选时各个过滤条件or连接
需求解析和思考:
我们常见的枚举下拉过滤场景一般可能是如下两种情况(@cs为枚举下拉参数名):
1、枚举下拉可多选,枚举值针对某一个主题表字段过滤,这种情况过滤条件通常可写成:table.zd in asstr(@cs).split("\|")
2、枚举下拉单选,选择不同的值,做不同的条件过滤,这种情况最常见的就是用if做@cs选择值的判断,返回不同的过滤条件。
而当前的需求场景,难点就在,多选的情况下并不好做if判断,因为可能的组合太多。那么是否可以考虑直接将不同的枚举值对应的过滤条件,直接作为字符串赋值给枚举下拉的枚举值呢?这样一来,过滤条件搭配数据函数或许就能大大简化。

实现步骤:
Step1、报表上添加枚举下拉框参数组件(比如参数名@cs),配置枚举值并允许多选;
这里需要注意,将各个枚举项对应的过滤条件写到各项的实际值中,比如下面5个选择项分别对应这5个字段的过滤条件:
选择项A:table.zd1=1;
选择项B:table.zd2=1;
选择项C:table.zd3=1;
选择项D:table.zd4=1;
选择项E:table.zd5=1

Step2、分析表中设置过滤条件:<#=asstr(@cs).split("\|").join(" or ")#>
其中.split("\|")将@cs返回值转数组格式返回,每个选项的过滤条件作为数组中的各个项;
.join(" or ")表示将各个过滤条件以or连接。


最近看过此主题的会员

lngzh

jiangyajuan

蔻恬

前进者

wxw

esen_4TUELCHD9M

v笑向前走

liguangliang

2个回答

只看楼主

辰哥 管理员

发表于2019-9-27 17:06

只看该作者

取消 关注该作者的回复

沙发

很棒的小技能分享

zengxq 数据达人Lv4

发表于2022-10-19 10:37

只看该作者

取消 关注该作者的回复

板凳

主题表字段 in ['<#=@cs.value.split("\|").join("','")#>']

登录后可回答问题,请登录注册

快速回复 返回顶部 返回列表

小时

全天响应

分钟

快速处理问题

工程师强势助力

明星产品
解决方案
联系合作

400咨询:400-0011-866

技术支持QQ:400-0011-866(工作日9:00-18:00)

产品建议邮箱yixin@esensoft.com

关注我们

扫TA学习更多干货

一对一专家交流

版权所有© 2006-2024 北京亿信华辰软件有限责任公司 京ICP备07017321号 京公网安备11010802016281号