Javascript函数不会在crm 2011中触发更改事件

时间:2013-10-18 12:14:16

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

情景:

第1步:我正在使用MS CRM 2011.I编写javascript函数获取字段值(电子邮件实体)并将该值设置为关于Field.It工作正常。

第2步:编写更新关于字段中的值的过程为clear.Because自动关联字段获取一些值。所以我需要在关于字段中将其更改为空。它正在工作细

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

问题:关注字段值在进程执行后获取清除。这意味着旧值替换和新值在关注字段中获取。它就像一个关于更改事件。旧值被替换作为一个空。

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

摘要:当我从Process.But更改值时onchange事件没有调用。我尝试手动javascript工作正常。

如何解决这个问题。

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

使用此Java脚本:

第1步编码 function 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();          

   }}

enter image description here

像这样调用Onchange它没有被解雇。

enter image description here

2 个答案:

答案 0 :(得分:6)

只有在使用Web界面执行操作(onload,onsave和onchange)时才会调用JavaScript代码。

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

答案 1 :(得分:0)

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

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服务,那么您必须 使用插件覆盖关注字段(如上所述)