Dynamics crm 2011 在crm 2011中更改事件时未触发Javascript函数

Dynamics crm 2011 在crm 2011中更改事件时未触发Javascript函数,dynamics-crm-2011,dynamics-crm,crm,dynamics-crm-online,Dynamics Crm 2011,Dynamics Crm,Crm,Dynamics Crm Online,情景: 步骤1:我正在使用MS CRM 2011。我编写了javascript函数来获取“收件人”字段值(电子邮件实体),并将该值设置到“关于”字段中。它工作正常 第2步:将更新“关于”字段中的值的过程写为“清除”。因为“关于”字段会自动获得一些值。因此我需要将“关于”字段中的值更改为空。它工作正常 步骤3:现在我在onchange事件中调用javascript函数 问题:相关字段值在流程执行后变为清晰。这意味着旧值替换和新值进入相关字段。这就像一个更改事件。旧值替换为空 但是这个函数不会触发。

情景:

步骤1:我正在使用MS CRM 2011。我编写了javascript函数来获取“收件人”字段值(电子邮件实体),并将该值设置到“关于”字段中。它工作正常

第2步:将更新“关于”字段中的值的过程写为“清除”。因为“关于”字段会自动获得一些值。因此我需要将“关于”字段中的值更改为空。它工作正常

步骤3:现在我在onchange事件中调用javascript函数

问题:相关字段值在流程执行后变为清晰。这意味着旧值替换和新值进入相关字段。这就像一个更改事件。旧值替换为空

但是这个函数不会触发。如果打开email表单并更改about字段,它工作正常,这意味着Javascript可以工作

摘要:当我从进程中更改值时,onchange事件没有调用。但是我手动尝试javascript工作正常

如何解决这个问题

**请参阅以下屏幕截图:

使用此Java脚本:

步骤1编码 函数toFieldValueToutherField() {

像这样调用Onchange它没有被触发。


只有在使用web界面执行操作(在您的情况下是onload、onsave和onchange)时,才会调用JavaScript代码


如果您使用工作流(或插件)更改字段值,则不会执行附加的javascript,因为代码仅在浏览器窗口内执行。

如果您使用CRM web界面创建电子邮件,则应在OnLoad事件中将其全部绑定。 OnLoad调用OnCrmPageLoad函数(删除OnChange调用,因为我们使用addOnChange方法)

如果在web界面之外创建电子邮件(即outlook或web服务)时需要强制执行此行为,则必须
使用插件覆盖相关字段(如上所述)

我同意@Guido,在这种情况下,我更愿意从插件更新
关于objectid
var lookup = new Array();
lookup = Xrm.Page.getAttribute("to").getValue();
if (lookup != null) 
{

    var name = lookup[0].name;
    var id = lookup[0].id;
    var entityType = lookup[0].entityType;
    Xrm.Page.getAttribute("regardingobjectid").setValue([{ id: id, name: name, entityType: entityType }]);
     //Xrm.Page.data.entity.save();          

   }}
function OnCrmPageLoad() {
   //Apply every time the To field changes
   Xrm.Page.getAttribute("to").addOnChange(TofieldValuetoOtherField); 
   //Apply when the from loads  
   TofieldValuetoOtherField(); 
}

TofieldValuetoOtherField = function()
{
   var lookup = Xrm.Page.getAttribute("to").getValue();
   if (lookup) 
   {
       var name = lookup[0].name;
       var id = lookup[0].id;
       var entityType = lookup[0].entityType;
       Xrm.Page.getAttribute("regardingobjectid")
        .setValue([{ id: id, name: name, entityType: entityType }]);
   }
}