我有一个方法,允许我从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