[英]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.