簡體   English   中英

業務流程流OptionSetValue步驟上的過濾選項

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

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