SharePoint Modern列表表单JSON自定义:RequestID字段无法显示
问题原因及解决方案
你的问题大概率出自以下几个点,逐一排查:
1. 字段内部名称不匹配
SharePoint字段的显示名称和内部名称经常不一致(比如字段重命名后,内部名不会跟着变更)。你代码里用的[$RequestID]如果是显示名称,就会出现读不到值的情况。
解决方法:
- 进入列表设置,点击
RequestID字段,查看浏览器地址栏中Field=后面的内容,这就是字段的内部名称(可能是RequestID、RequestID0或其他形式)。 - 将代码里的
[$RequestID]替换为[$实际内部名称],比如[$RequestID0]。
2. RequestID是计算字段且在新建表单中测试
如果RequestID是计算类型字段,在新建表单中它的值还未生成(计算字段值仅在保存条目后才会被计算出来),此时头部只会显示前缀,字段值为空。
解决方法:
- 切换到编辑表单或显示表单测试,此时应该能正常显示计算后的字段值。
- 如果需要在新建表单中显示类似ID的内容,建议改用自动编号方案:比如通过Power Automate生成唯一ID并填充,或者使用列表内置的
ID字段(内部名就是ID,可通过[$ID]调用,但注意新建表单中ID也会为空,因为ID在条目保存后才生成)。
3. 字段未真正添加到表单
虽然你提到已将字段添加到表单并隐藏,但如果字段没有被包含在表单的字段集合里,JSON代码无法读取到它的值。
解决方法:
- 进入表单编辑模式,确认
RequestID字段确实在表单的字段列表中(哪怕被条件格式隐藏),确保它没有被移除。
修正后的示例代码(假设内部名是RequestID)
{ "elmType": "div", "attributes": { "class": "ms-borderColor-neutralTertiary" }, "style": { "width": "99%", "border-top-width": "0px", "border-bottom-width": "1px", "border-left-width": "0px", "border-right-width": "0px", "border-style": "solid", "margin-bottom": "16px" }, "children": [ { "elmType": "div", "style": { "display": "flex", "box-sizing": "border-box", "align-items": "center" }, "children": [ { "elmType": "div", "attributes": { "iconName": "Group", "class": "ms-fontSize-42 ms-fontWeight-regular ms-fontColor-themePrimary", "title": "Details" }, "style": { "flex": "none", "padding": "0px", "padding-left": "0px", "height": "36px" } } ] }, { "elmType": "div", "attributes": { "class": "ms-fontColor-neutralSecondary ms-fontWeight-bold ms-fontSize-24" }, "style": { "box-sizing": "border-box", "width": "100%", "text-align": "left", "padding": "21px 12px", "overflow": "hidden" }, "children": [ { "elmType": "div", "txtContent": "='Application Change Request Form - ' + [$RequestID]" } ] } ] }
内容的提问来源于stack exchange,提问作者Tammy Lang
相关产品推荐
相关产品推荐

