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资源
我使用以下代码在我的 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资源