1. 需求场景
维下拉框绑定通用维,允许多选,但选择的时候最多只能选择3个节点,超出个数则出现提示“最多选择三项!”
2. 思路分析
2.1 思路一
维下拉多选时,返回值是 XX|XX|XX 这种每项之间被|符号隔开的格式,
|符号的个数=选择维节点的个数-1
|符号的个数=返回值字符串长度-去掉|后的字符串长度
通过|符号个数判断选择维节点个数是否超过3个。
2.2 思路二
维下拉多选时返回的XX|XX|XX可以用split(“|”)转换成数组[“XX”,”XX”,”XX”],那么数组的项的个数就是所选择的的维节点个数。
3. 设置方法
根据以上两个思路,我们分别可以通过以下两种设置方法实现该需求。
3.1 Plan A(思路一)
1)添加维下拉框@xzqh并绑定维表,再加一个输入框@cs,@cs用来取|符号的个数;
2)维下拉框上设置参数行为
len(@xzqh)-len(SUBSTITUTE(@xzqh,"|",""))

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

3.2 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,以及提示信息
请先登录