繁体   English   中英

使用JavaScript强制在Dynamics CRM 2011中使用SaveForm

[英]Force a SaveForm in Dynamics CRM 2011 using JavaScript

在CRM 2011中,我希望能够强制保存表单。 我的要求如下。

  1. 当用户打开表单时,我会检查特定字段是否为空。
  2. 如果它是空的,我想强制保存,从而触发一个设置字段的插件。

我目前的代码如下。 这是与LoadForm关联的FormOnLoad函数。

if(checkfield == null){
  Namespace.Functions.Contact.FormOnSave();
}
else{
 // do nothing. 
}

现在,这失败了以下一行

无法从释放的脚本执行代码。

我不知道如何继续前进。 作为临时修复,我所做的是以下内容

if(checkfield == null){
  setTimeout('Namespace.Functions.Contact.FormOnSave()',4000);
}
else{
 // do nothing. 
}

关于为什么会发生这种情况以及如何在没有超时的情况下修复它的任何建议都会非常有用吗?

我有一个看这个问题这个 ,但对我来说形式也得到加载或已实际上没有加载?

无论哪种方式,我如何强制保存CRM表单?

您可以使用以下方法保存表单:

parent.Xrm.Page.data.entity.save();

但它只会触发

(Xrm.Page.data.entity.getIsDirty() == true)

但是,有一种解决方法可以将IsDirty属性设置为true。 在PageLoad上运行Javascript函数。 尝试更新您计划通过插件填充的字段的值:

例如

function OnPageLoad()
{
    var yourField = Xrm.Page.getAttribute("new_yourfield").getValue();
    if(yourField == null)
    {
        parent.Xrm.Page.getAttribute("new_yourfield").setValue("any value");
        parent.Xrm.Page.getAttribute("new_yourfield").setSubmitMode("always");
        parent.Xrm.Page.data.entity.save();
    }
}

您可以通过创建在读取或实体上注册的插件,使用Javascript加载您的表单两次,从而跳过所有这些笨拙的混蛋。 (或者更好,如果可能的话,在创建实体上)

插件只检查字段,如果它是空的,执行你需要的任何逻辑来更新字段,然后保存它,并返回更新的字段(或者可能只填充值,不要更新数据库,直到用户执行保存)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM