簡體   English   中英

CRM 2011 - JavaScript - 在哪里設置業務需求

[英]CRM 2011 - JavaScript - Where to set Business Required

在表單中,如果選項集字段Decision中的值被選為Reject,我們希望將Reject Reason設置為Required。 我編寫了一個JS函數,然后將其與字段Decision的OnChange相關聯,並將Reject Reason字段設置為Required。

if (decisionOptionSetValue == 100000006 && decisionOptionSetText == "Reject") {
    Xrm.Page.getAttribute("new_rejectionreason").setRequiredLevel("required");
}

現在,上述工作正常,沒有任何問題。

問題是如果我打開相同的記錄,我可以愉快地刪除拒絕原因字段(new_rejectionreason)中的值,它不會拋出錯誤,因為我的代碼只有在我們對Decision選項集的值更改時觸發在這種情況下,沒有發生過。

現在,在哪里檢查以防止這些?

選項1 :我是否在new_rejectionreason字段上有一個OnChange,以便檢查該值是否已更改?

選項2 :在保存表單之前是否將檢查作為OnSave的一部分進行檢查並阻止表單保存(?)並將此字段設置為必需

選項3 :我是否將檢查作為OnLoad進行,並將字段new_rejectionreason設置為Required

還有其他選擇嗎?

在我看來,最好的選擇是選項3.因為你警告用戶需要字段new_rejectionreason並且不要等待保存表單警告。 對於選項1,您必須在new_rejectionreason中強制進行onchange,這種方式以后不易理解為什么強制onchange。

我不推薦的另一種選擇是另一種方法是在插件中進行此驗證並啟動InvalidPluginExecutionException,這將停止插件的執行並向用戶發送消息。 這僅適用於您的信息,請勿在此情況下使用此方法。

如果您不想讓用戶設置值,為什么不將該字段設為只讀? 因此,當他們更改決策字段的值時,添加以下內容:

Xrm.Page.ui.controls.get('new_rejectionreason').setDisabled(true);

因此,現在用戶無法在不更改決策字段的情況下編輯值。

編輯:我認為現在根據你的評論了解。 我認為最簡單的是在負載上添加額外的檢查。

function OnLoad() {
    var decisionValue = Xrm.Page.getAttribute('new_decision').getValue();
    if (decisionValue !== null) {
        Xrm.Page.getAttribute('new_rejectionreason').setRequiredLevel('required');
    }
}

因此,當您的頁面加載時,它會檢查“ Decision字段。 如果它找到一個值,它就知道Reject Reason字段是必需的,並將其標記為這樣。

您需要做的就是修改Decision的OnChange處理程序,以便在刪除值時取消設置所需的值。

if (decisionOptionSetValue === 100000006 && decisionOptionSetText === 'Reject') {
    Xrm.Page.getAttribute('new_rejectionreason').setRequiredLevel('required');
}
else {
    Xrm.Page.getAttribute("new_rejectionreason").setRequiredLevel('none');
}

在狀態設置為拒絕但原因為空的情況下,我會阻止保存實體。 不知何故,我覺得根據另一個領域的價值設置一個字段作為業務需要與否。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM