【已解决】维下拉节点选择个数校验需求

3368
1

我神经质 初学数据Lv2

发表于2018-6-29 09:36

楼主
需求:维下拉框绑定通用维,允许多选,但选择的时候最多只能选择3个节点,超出个数则出现提示“最多选择三项!”

最近看过此主题的会员

ssssssss

machh

wxw

CQS

zly_2960

pibangcai

MAM

九天

gelin

wxd88

1个回答

只看楼主

小亿 管理员

发表于2018-6-29 09:53

只看该作者

取消 关注该作者的回复

沙发

思路分析:
思路一:维下拉多选时,返回值是 XX|XX|XX 这种每项之间被|符号隔开的格式,
|符号的个数=选择维节点的个数-1
|符号的个数=返回值字符串长度-去掉|后的字符串长度
通过|符号个数判断选择维节点个数是否超过3个;
思路二:维下拉多选时返回的XX|XX|XX可以用split(“\|”)转换成数组[“XX”,”XX”,”XX”],那么数组的项的个数就是所选择的的维节点个数。


设置方法:
根据以上两个思路,我们分别可以通过以下两种设置方法实现该需求。

Plan A(思路一):


1、添加维下拉框@xzqh并绑定维表,再加一个输入框@cs,@cs用来取|符号的个数;
2、维下拉框上设置参数行为
len(@xzqh)-len(SUBSTITUTE(@xzqh,"\|",""))


注:
(1)SUBSTITUTE()是字符串替换函数,详见BI函数列表-》字符串函数中的说明;
(2)|属于特殊字符,因此表达式引用时需要用\转译一下
3、@cs上设置校验@cs<3,以及提示信息


Plan B(思路二):

1、添加维下拉框@xzqh并绑定维表,再加一个输入框@cs,@cs用来取选择维节点的个数(数组中项的个数);
2、维下拉框上设置参数行为
len(asstr(@xzqh).split("\|"))

注:
(1)split()是常用的数组用法,
(2)@xzqh(维下拉框参数)代表的是一个参数对象,@xzqh本身并不是一个字符串,它的返回值才是一个字符串,因此不能直接@xzqh.split(“\|”),而是需要用asstr(@xzqh)取到返回值的字符串;
(3)维下拉多选时,@xzqh.value返回值为[“XX”,”XX”]这样的数组格式,单选时则返回字符串”XX”。
3、@cs上设置校验@cs<=3,以及提示信息



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

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

小时

全天响应

分钟

快速处理问题

工程师强势助力

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

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

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

产品建议邮箱yixin@esensoft.com

关注我们

扫TA学习更多干货

一对一专家交流

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