如何通过可多选直角下拉框组件实现参数多选过滤

4056
4

1505121235 数据老手Lv5

发表于2019-7-9 00:18

楼主
本帖最后由 1505121235 于 2020-2-24 14:15 编辑

实现方法
第一步组件的取数设置,一般分两种情况:取固定值或者是动态值。
如果取固定值是需要写成一个二维数组的格式,如下图所示:
如果希望动态取表元的值,那么组件取数可以设置为:<#=[[GRID3.A2$],[GRID3.B2$]].matrix()#>,与[[1,"CA"], [2,"MU"], [3,"HU"], [4,"3W"]]等价

ps:数组行列转换用.matrix()

第二步参数单选/多选
(1)参数单选过滤条件及报表设计如下:

参数单选时,表格的过滤条件很容易<#=mkfilter("FY.BBQ_ in @cs")#>或者<#=mkfilter("FY.BBQ_=@cs")#>
(2)1.清楚参数多选返回的对象格式,利用宏表达式获取参数多选的返回值,定义事件实现参数组件联动表格计算并获取宏表达式的值

选中下拉框组件,右侧属性事件中定义
  1. function dochange(data) {
  2.     calc_Special_Widget(new Map("calc_widget_id=GRID2;@cs="+data));
  3. }
复制代码

2.参数多选时表格的过滤条件
因为参数多选返回的数据格式为201409,201410,201411,所以需要利用函数split('\,')
PS:asstr(*):将某个值转换成字符串类型
split():字符串可以通过split函数返回一个数组,下拉维多选或下拉枚举多选时,参数多选返回值通常格式为value1|value2|value3|value4,即用竖线作为分隔符。在BI中使用字符串.split分隔它时,"|"是一个特殊字符,需要在前面加个转义符"\",则@cs.value.split("\|")可得到已选参数值的数组格式
join():join把数组对象用指定连接符连接为字符串,@cs.value.split("\|").join(","),可修改其中的分隔符为逗号,得到逗号分隔的普通字符串

知识点扩展BI报表模板中维下拉参数多选,通过宏表达式获取的对象格式与酷屏中有所不同,报表模板中参数多选的返回对象格式为201409|201410|201411,酷屏中参数多选的返回对象格式为201409,201410,201411,所以要特别注意函数中需要转义的字符到底是|还是,



最近看过此主题的会员

esen_44BCDTY9TNT5

ddb

txl

huangt

qqqwww

Gardenia

zhzh

Yuuuu

4个回答

只看楼主

1505121235 数据老手Lv5

发表于2019-7-9 09:38

只看该作者

取消 关注该作者的回复

沙发

ps:字符串可以通过split函数返回一个数组,分隔符为特殊字符时,要在分隔字符参数值前面加转义符"\"("|"和“,”是一个特殊字符,需要在前面加个转义符"\")

tangmq 数据达人Lv4

发表于2019-7-9 09:57

只看该作者

取消 关注该作者的回复

板凳

学习了

小亿 管理员

发表于2019-7-9 11:26

只看该作者

取消 关注该作者的回复

地板

非常棒的文章,可以参加我们的额有奖征文活动哟~
附上活动链接
http://bbs.esensoft.com/thread-132185-1-1.html

yangqh 数据老手Lv5

发表于2019-7-19 16:37

只看该作者

取消 关注该作者的回复

5#

ABI酷屏中联动计算脚本写法:
calc_Special_Widget(new EUI.Map("calc_widget_id=HHH3,GRID1,HHH1;@nf="+data));

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

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

小时

全天响应

分钟

快速处理问题

工程师强势助力

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

渠道咨询电话:137-0120-6790

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

产品建议邮箱yixin@esensoft.com

关注我们

扫TA学习更多干货

一对一专家交流

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