1个回答
思路分析:
思路一:维下拉多选时,返回值是 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,以及提示信息