Dynamics 365 添加和删除Optionset

为什么我们需要在Dynamics 365中添加和删除选项集值?

考虑一个业务场景,我们需要根据既定逻辑动态地添加和删除一个选项值。

在下面的例子中,我们有两个名为“选项1”和“选项2”的选项集。

在这里,我们必须根据“选项1”中选择的值过滤“选项2”的值。

选项1和选项2字段信息:

选项1

gdh_optionset_a

NameValue
国产车10
合资车20

选项2

gdh_optionset_b

NameValue
比亚迪10
奇瑞20
五菱30
马自达40
丰田50
宝马60

过滤逻辑:

选了国产车,只能选择:比亚迪、奇瑞、五菱

选了合资车,只能选择:马自达、丰田、宝马

JavaScript

if (typeof Demo == "undefined") {
  Demo = { __namespace: true };
}
Demo = {
  _executionContext: null,
  _formContext: null,
  OnLoad: function (executionContext) {
    _executionContext = executionContext;
    _formContext = executionContext.getFormContext();
    _formContext.getAttribute("gdh_optionset_a").addOnChange(Demo.SetOptionsetB);
    Demo.SetOptionsetB();
  },
  SetOptionsetB: function () {
    //1.取选项2,再去掉选项2
    var BYD = _formContext.getAttribute("gdh_optionset_b").getOption(10);
    var CheryAutomobile = _formContext.getAttribute("gdh_optionset_b").getOption(20);
    var Wuling = _formContext.getAttribute("gdh_optionset_b").getOption(30);
    var Mazda = _formContext.getAttribute("gdh_optionset_b").getOption(40);
    var Toyota = _formContext.getAttribute("gdh_optionset_b").getOption(50);
    var BMW = _formContext.getAttribute("gdh_optionset_b").getOption(60);
    _formContext.getControl("gdh_optionset_b").removeOption(10);
    _formContext.getControl("gdh_optionset_b").removeOption(20);
    _formContext.getControl("gdh_optionset_b").removeOption(30);
    _formContext.getControl("gdh_optionset_b").removeOption(40);
    _formContext.getControl("gdh_optionset_b").removeOption(50);
    _formContext.getControl("gdh_optionset_b").removeOption(60);
    //2.根据选项1选项,添加选项1选项
    var optionset_a = _formContext.getAttribute("gdh_optionset_a").getValue();
    if(optionset_a == 10){
        _formContext.getControl("gdh_optionset_b").addOption(BYD);
        _formContext.getControl("gdh_optionset_b").addOption(CheryAutomobile);
        _formContext.getControl("gdh_optionset_b").addOption(Wuling);
    }else if(optionset_a == 20){
        _formContext.getControl("gdh_optionset_b").addOption(Mazda);
        _formContext.getControl("gdh_optionset_b").addOption(Toyota);
        _formContext.getControl("gdh_optionset_b").addOption(BMW);
    }
  },
};

效果:

image.png

image.png

最后修改:2023 年 11 月 08 日
如果觉得我的文章对你有用,请随意赞赏