[英]Filtering options on Business Process flow OptionSetValue step
我有一種方法可以過濾掉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] });
在表單加載事件和另一個字段的OnChange事件(salesstage)中調用此代碼。
有什么我想念的嗎? 好像MS自己的javascript正在此處撤消我的工作...
編輯:當我在header_process_new_my_optionset_field
上放置一個OnChange
偵聽器時,當我在標題業務流程中更改該字段的值時,什么都不會發生,但是new_my_optionset_field
上的onChange
偵聽new_my_optionset_field
將由表單或標題上的該字段的更改觸發業務流程。
但是,僅在new_my_optionset_field
字段上運行上述邏輯不會對業務流程中的同一字段進行過濾。
通過對所有窗體控件的名稱( Xrm.Page.ui.getControls().getAll()
)進行console.log
,我發現在流程的每個階段都有該屬性的控件實例,其次是1、2、3,依此類推。 在業務流程的所有階段都存在相同的字段。
所以我將上面的代碼更改為:
var control = Xrm.Page.getControl(fieldName);
var allOptions = control.getAttribute().getOptions();
//clear current options
control.clearOptions();
//below, same as above...
並這樣稱呼它:
FilterOptionSetValues('header_process_new_my_optionset_field', { stage: 1, availableOptions: [300000002, 300000003, 300000004] });
FilterOptionSetValues('header_process_new_my_optionset_field1', { stage: 1, availableOptions: [300000002, 300000003, 300000004] });
FilterOptionSetValues('header_process_new_my_optionset_field2', { stage: 1, availableOptions: [300000002, 300000003, 300000004] });
//and so on...
它最初是在工作,但僅在流程的第一階段過濾選項,這在測試時不是活動階段,因此給人的印象是沒有工作...
每次更改當前BPF階段(未選擇,但實際上進入下一階段)時,都會強制保存CRM。 這可能正在刷新您的選項集。 添加一個Xrm.Page.data.process.addOnStageChange事件處理程序,然后在其中運行過濾器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.