我有一個方法,允許我從OptionSetValue字段中篩選出某些選項。在業務流程流程OptionSetValue上的過濾選項步驟
它在表單字段上工作正常,但是當該字段位於標題中時,對於業務流程流,它「起作用」,通過調試,我看到清除並重新添加的選項(僅限於那些這應該有),但一旦形式呈現,所有的選項都可見...
這裏的方法:
FilterOptionSetValues: function (fieldName, visibleOptions) {
var ctrl = Xrm.Page.getControl(fieldName);
var allOptions = ctrl.getOptions();
//clear current options
ctrl.clearOptions();
//loop through all options of optionset and if one is found in config element, add it.
for (var x = 0; x <= allOptions.length - 1; x++) {
if (visibleOptions.availableOptions.indexOf(parseInt(allOptions[x].value)) > -1) {
ctrl.addOption(allOptions[x]);
}
}
}
這裏就是我把它叫做:
FilterOptionSetValues('header_process_new_my_optionset_field', { stage: 1, availableOptions: [300000002, 300000003, 300000004] });
該代碼在表單加載事件和另一個字段(salesstage)的OnChange事件中調用。
有什麼我失蹤了嗎?好像MS自己的JavaScript是解開我在這裏的工作...
編輯:當我把一個OnChange
監聽器header_process_new_my_optionset_field
,當我改變在頭業務流程該字段的值沒有任何反應,而是一種onChange
監聽器new_my_optionset_field
將由表單或標題業務流程流上該字段的更改觸發。
但是,僅在字段new_my_optionset_field
上運行上述邏輯,不會爲業務流程中的相同字段執行過濾。
您是否爲該屬性註冊了OnChange處理程序,並重新添加選項? clearOptions()調用onChange事件處理程序。 – dynamicallyCRM
@dynamicallyCRM我編輯了我的問題並指定代碼被調用的位置。 –
嘗試在超時函數中包裝調用並在5秒左右後運行它以排除CRM腳本在表單加載後異步更新它的情況? – dynamicallyCRM