在dynamcis crm中,经常会遇到因为界面上某个字段的值,去触发optionset字段类型的字段显示的值只显示其中一部分,这时候就需要借用dynamics crm
提供的方法进行过滤处理:
实例如下:
//optionset字段值过滤
function OptionSetAddRemoveBasedOnLookup() {
var lookupItem = Xrm.Page.getAttribute("statuscode").getValue(); // Replace lookup field Name
if (lookupItem != null) {
var optionSet = Xrm.Page.ui.controls.get("new_bill_rate");
var optionSetValues = optionSet.getAttribute().getOptions(); // retrieve All options of Option set field
optionSet.clearOptions();
optionSetValues.forEach(function (element) {
if (lookupItem == "2") {
if (element.value == "3")
optionSet.addOption(element);
if (element.value == "10")
optionSet.addOption(element);
if (element.value == "4")
optionSet.addOption(element);
else
optionSet.removeOption(element);
}
});
}
}
对于已存在的值,过了显示optionset值可能导致显示异常,所以采用如下方法过滤:
//保留values中的值,移除其余的值
function saleTypeValueFilter() {
var values = [0, 1];
filterOptionSet("new_saletype", values);
}
//通用过滤选项集值的函数 attributeName:需要过滤的选项集的属性名 valuesArr:需要保留的选项值
function filterOptionSet(attributeName, valuesArr) {
var optionSet = Xrm.Page.ui.controls.get(attributeName);
var optionSetValues = optionSet.getAttribute().getOptions(); // retrieve All options of Option set field
//optionSet.clearOptions();
optionSetValues.forEach(function (element) {
var index = valuesArr.indexOf(element.value);
if (index === -1)
optionSet.removeOption(element.value);
//else
//optionSet.addOption(element);
}, valuesArr);
}