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

D365创建联系人时导航至重复记录,如何屏蔽未保存更改弹窗?

解决Dynamics 365新建联系人导航到重复记录时无弹窗跳转的问题

核心问题是当前新建联系人表单处于脏状态(存在未保存的修改),调用Xrm.Navigation.openForm时会触发系统的脏检查弹窗。要实现无弹窗跳转,关键是先清除表单的脏标记,再执行导航操作。

具体实现步骤

  1. 清除表单脏状态
    使用客户端API将表单标记为"未修改",让系统认为没有未保存的更改,从而跳过保存提示。根据你使用的D365版本选择对应API:

    • 旧版客户端API:Xrm.Page.data.entity.setIsDirty(false)
    • 新版统一界面API:formContext.data.entity.setIsDirty(false)
  2. 导航到重复联系人记录
    清除脏状态后,再调用Xrm.Navigation.openForm打开目标记录,此时不会弹出保存确认弹窗。

示例代码(HTML Web资源双击事件处理)

假设你的HTML Web资源中,每条重复记录绑定了双击事件,处理函数可以这样写:

// 双击重复记录时触发,参数为目标联系人的GUID
function goToDuplicateContact(contactId) {
    // 获取新建联系人表单的上下文(根据实际场景调整获取方式)
    const formContext = parent.Xrm.Page;

    // 标记表单为未修改,清除脏状态
    formContext.data.entity.setIsDirty(false);

    // 配置打开表单的参数
    const formOptions = {
        entityName: "contact",
        entityId: contactId,
        openInNewWindow: false // 按需设置是否在新窗口打开
    };

    // 执行导航
    Xrm.Navigation.openForm(formOptions)
        .then(() => {
            // 导航成功后的可选处理逻辑
        })
        .catch(error => {
            console.error("导航失败:", error.message);
        });
}

注意事项

  • 表单上下文的获取方式需匹配环境:如果是新版统一界面,也可通过parent.Xrm.Utility.getGlobalContext().formClientState.formContext获取。
  • 调用setIsDirty(false)后,当前新建表单中用户录入的所有数据会被视为未修改,不会被保存,完全符合你"不保存当前录入记录"的需求。
  • 确保该逻辑仅在用户双击重复记录时触发,不要干扰正常的重复检测与保存流程。

内容的提问来源于stack exchange,提问作者user7142812

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 21:05:54