You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MS Dynamics CRM 2011:如何实现选项集字段保存后永久只读

解决CRM表单保存后字段刷新变回可编辑的问题

我来帮你搞定这个问题!你当前的脚本只在保存时设置字段禁用,但没有在表单加载时判断记录是否已经保存过,所以刷新页面后表单重新加载,字段又回到可编辑状态。要实现「首次允许编辑,保存后永久只读」的需求,核心是在表单加载时判断记录状态,再决定是否禁用字段。

问题根源

你的脚本只执行了禁用操作,但没有区分「新建记录」和「已保存记录」:

  • 新建记录时用户需要编辑字段,此时不能禁用;
  • 已保存的记录(刷新后加载的是已存在的记录)必须禁用字段。

解决方案

我们需要在表单加载事件中添加逻辑,判断当前记录是否为新建状态:

  1. 使用 Xrm.Page.data.entity.getIsNew() 判断记录是否是首次创建;
  2. 如果是新建记录,保持字段可编辑;
  3. 如果是已保存的记录,禁用字段并设置提交模式(确保字段值能正常提交)。

修改后的代码示例

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:35:23