2013-10-18 72 views
2

場景:JavaScript函數在CRM 2011年不會觸發對變化事件

第1步:正在使用MS CRM 2011.I寫JavaScript函數對於獲取到字段值(電子郵件實體)並設置值成關於Field.It工作正常。

第2步:編寫工藝更新的關於字段clear.Because值自動將有關現場得到一些Value.So我需要改變,在關於field.It爲空是工作的罰款。

第3步:現在我在onchange事件中調用javascript函數。

問題:關於字段值在進程Execute.which意味着舊值替換和新值在關於字段中得到清楚。它就像一個變化事件。舊值替換爲空。

但功能不觸發。如果打開電子郵件表單並更改有關字段,它工作正常,這意味着Javascript可以工作。

摘要:當我更改Process.But的值時,onchange事件沒有調用。

如何解決這個問題。

**請參考下面的屏幕截圖:

使用該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();   

    }} 

enter image description here

像這樣調用Onchange它沒有被解僱。

enter image description here

回答

6

JavaScript代碼只有當操作(onload事件,並且的OnSave電平變化在你的情況下),使用Web界面執行被調用。

如果使用工作流(或插件)更改字段值,則不會執行附加的JavaScript,因爲代碼僅在瀏覽器窗口內執行。

+0

我同意@Guido,在這種情況下,我寧願更新插件''objectobje''。 – Scorpion

0

如果您使用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界面之外創建電子郵件時強制實施此行爲,前景或web服務,那麼你必須 使用插件來覆蓋關於字段(如上所述)