簡體   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