2017-04-03 28 views
1

我在某些自定義實體的表單上添加了一個自定義按鈕,點擊時會複製記錄並在新窗口中打開新創建的記錄,新創建的記錄的FormTypeupdateCRM2015:第一次更新表單時驗證字段

在那個打開的窗口上,我需要知道保存按鈕是否被點擊。只要沒有被點擊,一些字段將被打開進行編輯;點擊後,這些字段將被禁用。

目前,我有一個(隱藏)位字段,指示記錄是否重複,並且其初始值設置爲true。在第一次點擊保存按鈕時,在我的onSave函數中,我將它設置爲false。另外,我有一個onLoad函數檢查這個字段是否爲true(可能只發生一次記錄重複)或者爲false。

我的問題是合乎邏輯的:爲了在第一次保存點擊時將此字段設置爲false,我實際上需要在每次點擊按鈕(以及非重複記錄時)時進行驗證。

我想也許有人可以提供一些其他的,更符合邏輯的方法,只對保存事件進行一次驗證。

下面是相關片段:

function OnLoad() 
{ 
    // some code... 
    if (Xrm.Page.getAttribute("sln_isduplicate").getValue() == true) 
    { 
     // open for edit relevant fields 
    } 
    else 
    { 
     // close for edit relevant fields 
    } 
    // some code... 
} 

function OnSave() 
{ 
    // some code... 
    if (Xrm.Page.getAttribute("sln_isduplicate").getValue() == true) 
    { 
     Xrm.Page.getAttribute("sln_isduplicate").setValue(false); 
    } 
    // some code... 
} 

回答

1

簡單地稱之爲:

Xrm.Page.getAttribute("sln_isduplicate").setValue(false); 

在你的OnLoad功能,你所做的一切形式的修改之後,所以:

function OnLoad() 
{ 
    // some code... 
    if (Xrm.Page.getAttribute("sln_isduplicate").getValue() == true) 
    { 
     // open for edit relevant fields 
    } 
    else 
    { 
     // close for edit relevant fields 
    } 

    Xrm.Page.getAttribute("sln_isduplicate").setValue(false); 
} 

不管它是否重複 - 您希望用戶在保存記錄時將此標誌設置爲false。

另一種方法是動態添加onsave事件(因爲我假設你已經將它添加到表單級別)。基本上它看起來是這樣的:

if (Xrm.Page.getAttribute("sln_isduplicate").getValue() == true) 
{ 
    // open for edit relevant fields 
    Xrm.Page.data.entity.addOnSave(OnSave); 
} 
else 
{ 
    // close for edit relevant fields 
} 

這種方法只會添加您的OnSave函數只用於重複的記錄。

但另一方面,我不會使用自定義字段,而是傳遞一些查詢字符串參數來表明這是重複的。你可能會打開新創建的記錄這樣的:

Xrm.Utility.openEntityForm("entityname","A85C0252-DF8B-E111-997C-00155D8A8410"); 

但是,當您檢查documentation此功能,你會看到它有對你很有用的選項:

Xrm.Utility.openEntityForm(name,id,parameters,windowOptions) 

其中參數默認的字段ID或一些完全自定義的值(但你必須configure that

所以當然,顯而易見的解決方案是:打開你的重複記錄與一些自定義查詢字符串參數,在onload函數c哎呀,如果它在那裏,只要做你的具體邏輯

+0

解決方案2&3正是我一直在尋找,謝謝! – HeyJude