条件表达式
=case()
- 函数说明: 对数据进行判断
- 参数说明:case(expression,value,default) 表达式,值,默认值
参数 | 说明 |
---|---|
expression | 一个判断语句,如'#{test.sex}'=='1' ,判断两边参数类型必须一致 |
value | 若expression返回true,则case表达式取该值 |
default | 若expression返回false ,则case表达式取该值 |
- 示例:
- 例1:
=case('#{test.sex}'=='1','男','女')
- 例2: =case(1==1,1,2) ->1
- 注意:
- 如果为字符串则需要加上单引号,如例1;
- 如果为数值并且可能为空的话,那么你需要这样写
=case(intval(#{test.sex})==1,'1','2')
; - 使用intval表达式的作用有:
-
①当
#{test.sex}
为空可以返回数值0,然后再和1比较; -
②当
#{test.sex}
类型为字符串可以返回对应的数值,然后再和1比较;
-
let sex = 1;
return sex==1?'男':'女';
=(if)
- 函数说明:括号中可以写复杂的if运算符,也支持自定义变量
let sex= '${sex}';
- 示例一:根据值动态翻译性别文本
=(let sex= '#{dd.sex}';
if(sex== '1'){
'男'
}elsif(sex== '2'){
'女'
}else{
'未知'
})
sex包括1,2,空,注意else if的写法为elsif
- 示例二: 根据删除标识,动态修改字的颜色和背景色。
=(let sex= '#{ccc.del_flag}';
if(sex== '0'){
return color('未删除','red','yellow');
}elsif(sex== '1'){
return '已删除';
}else{
return '未知';
})
返回return
和结束;
也可以不写。
效果:
4. 示例三:if 支持固定单元格判断
=(if(A1==1){return (A1+B1)*200;})
注意:如果为数值并且为空的话,那么你需要这样写
=(let sex= intval(#{ccc.del_flag}); if(sex==1){return sex*200;})
intval为空返回0
斑马线使用示例
1.使用条件表达式实现列表斑马线的效果(如下)
操作步骤如下:
表达式说明:
=case(#{aa_index+1}%2==0,rowcolor('#{aa.id}', '', '#eee'),'#{aa.id}')
- case条件表达式传入三个参数,条件、条件值、默认值
- 条件:
#{aa_index+1}%2==0
aa是数据集的编码,#{aa_index+1}
表示当前数据集循环的行数,除以2求余=0,表示偶数行条件成立。 - 条件值:
rowcolor('#{aa.id}', '', '#eee')
,rowcolor函数表示该单元格文本为#{aa.id}
,单元格所在行的字体颜色不设置,背景颜色为#eee
- 默认值为
#{aa.id}
,即普通显示,此处要想用另一种背景色也可以用rowcolor函数。