PCF组件更新数据集记录查找字段时遇Invalid snapshot错误求助
在PCF组件中更新数据集绑定的Lookup字段问题及解决方法
问题场景
PCF组件中items为绑定数据集,配置如下:
<data-set name="items" display-name-key="items-name" description-key="items-description" cds-data-set-options="displayViewSelector:true" />
针对文本等简单数据类型,使用setValue和save函数可正常完成更新,简化代码示例:
public updateView(context: ComponentFramework.Context<IInputs>): React.ReactElement { const recordIds = context.parameters.items.sortedRecordIds const record = context.parameters.items.records[recordIds[0]] record.setValue("pre_name", "Test") record.save() }
但尝试更新Lookup列时触发错误,更新代码如下:
record.setValue("pre_resource", { id: { guid: "********-****-****-****-************" }, etn: "systemuser", name: "Jon Doe" }) record.save()
报错信息:
Uncaught (in promise) UciError: Invalid snapshot with id undefined
已确认pre_resource为正确的字段逻辑名称,且调用record.getValue("pre_resource")返回的格式与传入setValue的格式完全一致。
解决方法
更新Lookup字段时,需使用PCF数据集记录setValue方法期望的扁平化实体引用格式,将id直接设为字符串类型的GUID,用entityType替代原代码中的etn:
record.setValue("pre_resource", { id: "********-****-****-****-************", entityType: "systemuser", name: "Jon Doe" }) record.save()
核心说明
- PCF数据集记录的
setValue方法对Lookup字段的参数格式有特定要求:id必须是字符串格式的GUID,entityType对应目标实体的逻辑名称,name为Lookup字段的显示名称。 - 原代码中嵌套的
id.guid结构属于Web API等其他场景的格式,并不适用于PCF数据集记录的更新操作。
内容的提问来源于stack exchange,提问作者Kurt Riede
相关产品推荐
相关产品推荐

