You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用JavaScript为Dynamics 365 CRM隐藏Option Set选项值?

Dynamics 365 CRM 选项集隐藏代码问题修正

现有代码存在的问题

  • 废弃API使用错误
    Dynamics 365 9.x及以上版本已经移除了formContext.Page对象,直接通过formContext.getControl("字段名")即可获取控件实例,原代码中的formContext.Page.getControl写法已经失效。
  • removeOption参数类型错误
    该方法要求传入的是选项集对应项的整数值,不是选项的显示文本,你需要先到选项集的定义页,找到Test1~Test4对应的数字值(比如Test1对应1、Test2对应2这类),再传入对应整数参数才能生效。
  • 未覆盖业务流程流(BPF)中的同名字段
    表单上的选项集控件和BPF中使用的同名字段控件是两个独立实例,如果需要BPF里的对应选项也隐藏,需要额外获取BPF的控件,控件名规则为header_process_ + 字段名,本场景下就是header_process_statuscode。

修正后可运行代码

function hideOptions(executionContext) {
    var formContext = executionContext.getFormContext();
    // 仅在创建(1)和更新(2)表单类型下执行
    if (formContext.ui.getFormType() === 1 || formContext.ui.getFormType() === 2 ) {
        // 获取表单上的选项集控件
        var formPicklist = formContext.getControl("statuscode");
        // 替换为你自己选项集对应Test1~Test4的实际整数值,以下为示例值
        var needHideValues = [1,2,3,4]; 
        needHideValues.forEach(function(val){
            formPicklist.removeOption(val);
        })

        // 额外处理业务流程流中的同名字段控件
        var bpfPicklist = formContext.getControl("header_process_statuscode");
        if(bpfPicklist){ // 避免BPF未加载时报错
            needHideValues.forEach(function(val){
                bpfPicklist.removeOption(val);
            })
        }
    }
}

配置注意事项

  • 执行前务必替换needHideValues数组的值为你选项集里Test1~Test4对应的实际整数值,可到解决方案中对应statuscode字段的定义页查看每个选项的数值
  • 该函数需要绑定到表单的onLoad事件,同时要勾选「将执行上下文作为第一个参数传递」的选项
  • 该方案仅前端隐藏选项,不会删除选项集的全局配置,也不影响BPF的原有逻辑,符合你的需求

内容的提问来源于stack exchange,提问作者The G

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 06:39:02