Dynamics crm online + 在 html webresource 中禁用自动保存

Dynamics crm online + Disable autosave in html webresource

我使用以下代码在我的 crm 表单上禁用了自动保存功能。但是它仍然会触发我的 html 网络资源中的保存功能。

//Javascript on the Form onsave

let eventArgs = context.getEventArgs();

if (eventArgs.getSaveMode() == 70)
{
    eventArgs.preventDefault();
}

我正在使用 Vue.js 作为 html 网络资源的后端。下面是我写的代码:

//Javascript File behind the html

async created: function () 
{
    window.parent.Xrm.Page.data.entity.addOnSave(async () => { await saveData(this) });
}
    

saveData : function()
{
    let results = await window.parent.Xrm.WebApi.online.executeMultiple(modifiedrecords);

    for (let resultsub in results) 
    {
        const result = results[resultsub];

        if (result.ok) {}
    }
}

如有任何帮助,我们将不胜感激。

您正在使用 window.parent.Xrm.Page 构造访问 Web 资源的父表单。这确实有效,但不受支持且不可靠。 (此外,在 Dynamics CRM 2016 中无法再访问父页面。)

实体表单是非常复杂的对象,在调用表单 onload 之前需要进行一些繁重的处理。相反,HTML 集成在 iFrame 实体表单上的 Web 资源通常是轻量级的,因此加载速度很快。因此,您的 Web 资源会在表单能够执行此操作之前将其自身附加到 onSave 处理程序。但是,这可能会有所不同,具体取决于浏览器的缓存行为和其他因素。无论如何,当 Web 资源在表单之前附加自身时,它不受事件管道中 preventDefault() 的影响。

可以通过让实体窗体的onLoad函数主动加载来解决and/or初始化web资源