MS Dynamics CRM 2011:如何实现选项集字段保存后永久只读
解决CRM表单保存后字段刷新变回可编辑的问题
我来帮你搞定这个问题!你当前的脚本只在保存时设置字段禁用,但没有在表单加载时判断记录是否已经保存过,所以刷新页面后表单重新加载,字段又回到可编辑状态。要实现「首次允许编辑,保存后永久只读」的需求,核心是在表单加载时判断记录状态,再决定是否禁用字段。
问题根源
你的脚本只执行了禁用操作,但没有区分「新建记录」和「已保存记录」:
- 新建记录时用户需要编辑字段,此时不能禁用;
- 已保存的记录(刷新后加载的是已存在的记录)必须禁用字段。
解决方案
我们需要在表单加载事件中添加逻辑,判断当前记录是否为新建状态:
- 使用
Xrm.Page.data.entity.getIsNew()判断记录是否是首次创建; - 如果是新建记录,保持字段可编辑;
- 如果是已保存的记录,禁用字段并设置提交模式(确保字段值能正常提交)。
修改后的代码示例
function setTestFieldReadOnlyOnLoad() { // 获取字段控件和属性 const testControl = Xrm.Page.ui.controls.get("new_test"); const testAttribute = Xrm.Page.data.entity.attributes.get("new_test"); // 判断当前记录是否为新建状态 const isNewRecord = Xrm.Page.data.entity.getIsNew(); if (!isNewRecord) { // 非新建记录(已保存过),禁用字段 testControl.setDisabled(true); // 设置提交模式为always,确保字段值在后续保存时能被提交 testAttribute.setSubmitMode("always"); } else { // 新建记录,保持字段可编辑 testControl.setDisabled(false); } }
配置步骤
- 打开CRM表单的编辑器,找到「表单属性」;
- 在「事件」选项卡中,选择「表单加载」事件;
- 将上述函数添加到表单加载事件的脚本中,并确保启用该事件;
- 保存并发布表单。
这样设置后,用户首次创建记录时可以正常编辑new_test字段,保存后再次打开(或刷新)表单,字段会自动变为只读状态,不会再出现刷新后恢复可编辑的问题。
内容的提问来源于stack exchange,提问作者user3568701
相关产品推荐
相关产品推荐

