如何基于另一列的值对Choice列进行条件JSON格式化
问题修正:基于另一列值设置Choice列的显示逻辑
你的需求是当Location列包含Hawaii时,为当前Choice列设置对应显示内容或样式,但提供的JSON代码存在语法和逻辑错误,以下是修正方案:
原代码的问题
toLowerCase函数参数错误:正确用法是toLowerCase([$Location]),你把目标字符串和搜索值都放在了函数参数里,导致语法错误indexOf的逻辑判断括号不匹配:条件部分的括号嵌套错误,无法正确执行判断if函数结构不完整:SharePoint列格式化的if语法为if(条件, 满足时的值, 不满足时的值),原代码写法不符合规范
修正后的代码示例
如果你希望当Location列包含Hawaii(不区分大小写)时,当前Choice列显示为Deliver,否则显示原字段值,可使用以下代码:
{ "$schema": "https://developer.microsoft.com/json-schemas/sp/v2/column-formatting.schema.json", "elmType": "div", "txtContent": "=if(indexOf(toLowerCase([$Location]), 'hawaii') != -1, 'Deliver', @currentField)", "attributes": { "class": "=if(indexOf(toLowerCase([$Location]), 'hawaii') != -1, 'ms-fontWeight-bold', '')" } }
代码说明
toLowerCase([$Location]):将Location列的值转为小写,实现不区分大小写的匹配indexOf(..., 'hawaii') != -1:判断转换后的字符串是否包含目标值txtContent部分:满足条件时显示指定内容Deliver,否则显示原Choice列的选中值attributes.class部分:可选设置,满足条件时给文本添加加粗样式,增强视觉区分
如果你的需求是在编辑时自动设置Choice列的默认值,列格式化无法实现该功能,需要通过Power Automate流或自定义列表逻辑来完成。
内容的提问来源于stack exchange,提问作者Hans Kristensen
相关产品推荐
相关产品推荐

