跳到主要内容

条件表达式

=case()

  1. 函数说明: 对数据进行判断
  2. 参数说明:case(expression,value,default) 表达式,值,默认值
参数说明
expression一个判断语句,如'#{test.sex}'=='1' ,判断两边参数类型必须一致
value若expression返回true,则case表达式取该值
default若expression返回false ,则case表达式取该值
  1. 示例:
  • 例1: =case('#{test.sex}'=='1','男','女')
  • 例2: =case(1==1,1,2) ->1
  1. 注意:
  • 如果为字符串则需要加上单引号,如例1;
  • 如果为数值并且可能为空的话,那么你需要这样写=case(intval(#{test.sex})==1,'1','2')
  • 使用intval表达式的作用有:
    • ①当#{test.sex}为空可以返回数值0,然后再和1比较;

    • ②当#{test.sex}类型为字符串可以返回对应的数值,然后再和1比较;


let sex = 1;
return sex==1?'男':'女';

=(if)

  1. 函数说明:括号中可以写复杂的if运算符,也支持自定义变量 let sex= '${sex}';
  2. 示例一:根据值动态翻译性别文本
=(let sex= '#{dd.sex}';
if(sex== '1'){
'男'
}elsif(sex== '2'){
'女'
}else{
'未知'
})

sex包括1,2,空,注意else if的写法为elsif

  1. 示例二: 根据删除标识,动态修改字的颜色和背景色。
=(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函数。