# 条件表达式 [TOC] ## =case() 1. 函数说明: 对数据进行判断 2. 参数说明:case(expression,value,default) 表达式,值,默认值 | 参数 | 说明 | | --- | --- | | expression| 一个判断语句,如'#{test.sex}'=='1' ,判断两边参数类型必须一致 | | value| 若expression返回true,则case表达式取该值 | | default| 若expression返回false ,则case表达式取该值 | 3. 示例: - 例1: =case('#{test.sex}'=='1','男','女') - 例2: =case(1==1,1,2) ->1 4. 注意: - 如果为字符串则需要加上单引号,如例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` 3. 示例二: 根据删除标识,动态修改字的颜色和背景色。 ``` =(let sex= '#{ccc.del_flag}'; if(sex== '0'){ return color('未删除','red','yellow'); }elsif(sex== '1'){ return '已删除'; }else{ return '未知'; }) ``` 返回`return`和结束`;`也可以不写。 效果: ![](https://img.kancloud.cn/7d/c6/7dc6bdcd4a1bc815f0d05489642091f2_816x397.png) 4. 示例三:if 支持固定单元格判断 `=(if(A1==1){return (A1+B1)*200;})` 注意:如果为数值并且为空的话,那么你需要这样写 `=(let sex= intval(#{ccc.del_flag}); if(sex==1){return sex*200;})` intval为空返回0 ----- ## 斑马线使用示例 1.使用条件表达式实现列表斑马线的效果(如下) ![](https://img.kancloud.cn/03/f9/03f952bbd1e67b4fce720afd8c03489e_637x321.png) 操作步骤如下: ![](https://img.kancloud.cn/b2/a2/b2a2c9da9c110c7381014b78e4b1d464_1680x442.png) 表达式说明: `=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函数。