【问题标题】:Javascript Function Not Trigger in crm 2011 on change eventJavascript 函数未在 crm 2011 中触发更改事件
【发布时间】:2013-10-18 12:14:15
【问题描述】:

场景:

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

第 2 步: 将更新相关字段中的值的过程写清楚。因为相关字段会自动获取一些值。所以我需要在相关字段中将其更改为空。它正在工作很好。

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

问题: 相关字段值在处理执行后得到明确。这意味着旧值替换和新值进入相关字段。就像一个 on change 事件。旧值被替换作为一个空。

但功能没有触发。如果打开电子邮件表单并更改相关字段,它工作正常,这意味着 Javascript 可以工作。

总结:当我从 Process 更改值时,onchange 事件没有调用。但我手动尝试 javascript 工作正常。

如何解决这个问题。

**参考以下屏幕截图:

使用这个 Java 脚本:

第 1 步编码 函数 TofieldValuetoOtherField() {

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();          

   }}

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

【问题讨论】:

    标签: dynamics-crm-2011 dynamics-crm crm dynamics-crm-online


    【解决方案1】:

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

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

    【讨论】:

    • 我同意@Guido,在这种情况下,我更愿意从插件更新regardingobjectid
    【解决方案2】:

    如果您使用 CRM Web 界面来创建电子邮件,那么您应该将其全部绑定在 OnLoad 事件中。 OnLoad 调用 OnCrmPageLoad 函数(删除 OnChange 调用,因为我们是使用 addOnChange 方法进行的)。

    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 }]);
       }
    }
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-22
      • 2016-11-09
      • 1970-01-01
      • 1970-01-01
      • 2011-12-16
      • 1970-01-01
      相关资源
      最近更新 更多