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

Model Driven App:使用导航时如何移除默认保存变更提示

问题描述
  • 在Dataverse的Report主表单上,有一个名为“Generate Report”的自定义功能区按钮
  • 通过JavaScript Web资源实现报表生成:用Fetch XML从Dataverse表获取数据,转换为CSV格式后上传至新建的Report记录
  • 报表创建完成后,需要传入新生成的Report GUID,导航至该报表的编辑表单
  • 当前所有功能正常,但从新建Report表单跳转时,会弹出“离开页面前请保存更改”的提示弹窗
  • 需求:仅在点击“Generate Report”按钮并跳转至新报表时,移除该提示弹窗
解决方案

要实现仅在点击该按钮时跳过离开提示,可通过以下两种实用方法处理:

方法1:标记表单为“无未保存更改”状态

在跳转代码执行前,调用表单API将脏状态设为false,让系统判定没有未保存内容,从而不触发提示:

// 跳转前添加此行代码
Xrm.Page.data.setIsDirty(false);

// 原跳转逻辑(根据实际代码调整)
var newReportId = "新生成的Report记录GUID";
Xrm.Utility.openEntityForm("report", newReportId);

如果是新版Power Apps模型驱动应用,建议使用formContext替代Xrm.Page:

function generateAndNavigate(formContext) {
    // 执行报表生成逻辑...
    
    // 标记表单无未保存更改
    formContext.data.setIsDirty(false);
    
    // 导航至新报表编辑表单
    Xrm.Utility.openEntityForm("report", newReportId);
}

方法2:使用navigateTo并配置跳过提示参数

若使用Xrm.Navigation.navigateTo方法跳转,可直接通过参数设置跳过提示:

var pageInput = {
    pageType: "entityrecord",
    entityName: "report",
    entityId: newReportId // 新生成的Report记录GUID
};
var navigationOptions = {
    target: 1, // 1=当前窗口打开,2=新窗口打开
    skipPrompt: true // 关键参数:跳过未保存更改提示
};

Xrm.Navigation.navigateTo(pageInput, navigationOptions).then(
    function () { /* 成功跳转后的回调逻辑 */ },
    function (error) { /* 错误处理逻辑 */ }
);

注意事项

  • 确保上述代码仅在点击“Generate Report”按钮时触发,避免影响表单正常的未保存提示逻辑
  • 新版模型驱动应用优先使用formContext和Xrm.Navigation.navigateTo,Xrm.Page已逐步被弃用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 11:45:09