在CRM中动态更改选项集值 [英] Dynamically Change Option Set Values in CRM

查看:207
本文介绍了在CRM中动态更改选项集值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用CRM Online 2013。

I am using CRM Online 2013.

我试图在特定条件下从选项集中删除3个值。
默认情况下,optionset有六个选项:它们列在我的JS代码的顶部。

I am trying to remove 3 values from an optionset under a certain condition. The optionset has six options by default: they are listed at the top of my JS code below.

当我运行我的代码时,选项的数量正确出现;但他们都说未定义。

When I run my code, the correct amount of options appear; but they all say undefined.

以下是我目前的情况:

var customer = 100000000;
var partner = 100000001;
var partnerCustomer = 100000002;
var customerAndBeta = 100000003;
var partnerAndBeta = 100000004;
var partnerCustomerAndBeta = 100000005;

function populateBetaOptionSet(beta) {
    var options = Xrm.Page.getAttribute("intip_websiteaccess").getOptions();
    var pickListField = Xrm.Page.getControl("intip_websiteaccess");

    for(i = 0; i < options.length; i++)
    {
        pickListField.removeOption(options[i].value);           
    }

    if (beta == false) {
        pickListField.addOption(customer);
        pickListField.addOption(partner);
        pickListField.addOption(partnerCustomer);
    }

    pickListField.addOption(customerAndBeta);
    pickListField.addOption(partnerAndBeta);
    pickListField.addOption(partnerCustomerAndBeta);
}

这是从另一个连接到单独字段的onchange的函数调用的事件。我确信这是正常的,因为我在调用它时会得到正确的beta值。

This is being called from another function which is wired up to a separate field's onchange event. I am sure this is working correctly as I am getting the correct beta value through when it is called.

我在删除所有选项之前重新添加它们以避免重复。

I am removing all the options before re-adding them to avoid duplicates.

知道我在这里做错了什么/或者知道更好的方法吗?

Any idea what I am doing wrong here/or know of a better way of doing this?

推荐答案

重写您的功能以符合标准。该选项是具有文本和值的对象。这就是你看到未定义(缺少文本)的原因;
所以而不是

Re-wrote your function to match the criterion. The option is an object with both text and value. This is why you see undefined (missing text); So instead of

var customer = 100000000 

它必须是

var customer = { value : 100000000 , text : "Customer" };

下面的代码将每个选项保存在全局范围内,并在每次调用populateBetaOptionSet时使用它

The code below saves each option in global scope and uses it each time you call populateBetaOptionSet

function populateBetaOptionSet(beta) {
    var xrmPage = Xrm.Page;
    var pickListField = xrmPage.getControl("intip_websiteaccess");
    var options = pickListField.getOptions();

    //save all options  
    if (!window.wsOptions)
    {
         window.wsOptions = {};
         wsOptions.customer = pickListField.getOption(100000000);
         wsOptions.partner = pickListField.getOption(100000001);
         wsOptions.partnerCustomer = pickListField.getOption(100000002);
         wsOptions.customerAndBeta = pickListField.getOption(100000003);
         wsOptions.partnerAndBeta = pickListField.getOption(100000004);
         wsOptions.partnerCustomerAndBeta = pickListField.getOption(100000005);
    }

    //clear all items
    for(var i = 0; i < options.length; i++)
    {
            pickListField.removeOption(options[i].value);           
    }

    if (beta == false) {
        pickListField.addOption(wsOptions.customer);
        pickListField.addOption(wsOptions.partner);
        pickListField.addOption(wsOptions.partnerCustomer);
    }

    pickListField.addOption(wsOptions.customerAndBeta);
    pickListField.addOption(wsOptions.partnerAndBeta);
    pickListField.addOption(wsOptions.partnerCustomerAndBeta);
}

这篇关于在CRM中动态更改选项集值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆