2013-03-13 36 views
3

在表單中,如果選項集字段決策中的值被選爲拒絕,我們希望將拒絕原因設置爲必需。我寫了一個JS函數,然後與字段Decision的OnChange相關聯,並將Reject Reason字段設置爲Required。客戶關係管理2011 - JavaScript - 在哪裏設置業務必需

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

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

問題是,如果我打開相同的記錄,我可以愉快地從拒絕原因字段(new_rejectionreason)中刪除該值,並且不會拋出錯誤,因爲我的代碼只會在更改在這種情況下沒有發生的決策選項集合。

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

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

選項2:我做這張支票的OnSave的一部分之前,我保存表單和防止形式從節約和這個字段設置爲必填

選項3(?):我該怎麼辦檢查爲OnLoad並將字段new_rejectionreason設置爲必需

任何其他選項?

+0

如果您喜歡其中一個回覆,請不要忘記將其標記爲答案。我們喜歡那些綠色的複選標記... :) – 2013-03-14 07:26:43

回答

3

在我看來,最好的選擇是選項3.因爲你警告用戶該字段new_rejectionreason是必需的,不要等待保存表單來警告。對於選項1,你必須在new_rejectionreason中強制使用onchange,並且這種方式稍後很難理解爲什麼強制onchange。

另一種選擇,我不推薦但是另一種方法是在插件中進行此驗證並啓動InvalidPluginExecutionException,這會停止執行插件並向用戶發送消息。這只是爲了您的信息,不要在這種情況下使用這種方法。

3

爲什麼不讓該字段只讀,如果你不想讓用戶設置值?所以,當他們改變決定字段的值,添加以下內容:

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字段是必需的,並將其標記爲。

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

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

不能這樣做,因爲new_rejectionreason是一個選項集字段,因此,決策可以是拒絕,但用戶可以隨時將拒絕原因的值從值1更改爲值2 ...,他們只是不應該能夠將其設置回NULL,除非它們將決策字段的值更改爲不等於拒絕的值。 – Kanini 2013-03-13 16:08:49

+0

謝謝,在一個小修改中做了很多事情 - decisionValue應該作爲OnLoad()函數的一部分檢查Reject的值,如果是這樣,請設置Rejection Reason爲必需。 – Kanini 2013-03-13 16:35:24

+0

+1表示清晰和消耗性回覆。 – 2013-03-14 07:27:50

0

我只想阻止實體的節省情況,狀態設置爲拒絕但原因是空下。不知何故,根據另一個領域的價值,我覺得根據業務的需要設置一個領域是不安的。

+1

最終它是同樣的事情嗎? 1)當字段A爲空時,防止保存(實現你自己的,未標記的,自定義所需的邏輯)如果字段B被設置爲X. 2)將字段A設置爲需要,如果字段B被設置爲X – glosrob 2013-03-13 23:04:49

+0

@glosrob我想是的。但我不願意根據外部環境來決定是否同時需要業務領域和不需要業務。它感覺不完全正確,但我不能辯論除了讓我的皮膚爬行之外的點。我會檢查我的MVP他認爲最佳做法。不過,採用其他方法令人耳目一新 - 這是肯定的。 – 2013-03-14 07:25:39

相關問題