Javascript 在CRM 2011中筛选子选择列表
我正在尝试将javascript代码从CRM 4.0转换为CRM 2011。 我的选择列表过滤器有问题 我的函数位于父选取列表的一次更改上。它第一次起作用,但第二次就把我孩子名单上的所有东西都抹掉了Javascript 在CRM 2011中筛选子选择列表,javascript,dynamics-crm-2011,Javascript,Dynamics Crm 2011,我正在尝试将javascript代码从CRM 4.0转换为CRM 2011。 我的选择列表过滤器有问题 我的函数位于父选取列表的一次更改上。它第一次起作用,但第二次就把我孩子名单上的所有东西都抹掉了 for (var i=oSubPicklist.getOptions.length; i >= 0;i--) { if(oTempArray[i] != true) { Xrm.Page.getControl("new_product")
for (var i=oSubPicklist.getOptions.length; i >= 0;i--)
{
if(oTempArray[i] != true)
{
Xrm.Page.getControl("new_product").removeOption(i);
}
}
这是我想重置选择列表的部分
if(!oSubPicklist.originalPicklistValues)
{
oSubPicklist.originalPicklistValues = oSubPicklist.getOptions();
}
else
{
oSubPicklist.getOptions = oSubPicklist.originalPicklistValues;
oSubPicklist.setOptions = oSubPicklist.originalPicklistValues;
}
这是我删除所有不相关选项的部分:
oTempArray是一个具有我想要保留的选项的数组。如果选中“oSubPicklist.getOptions.length”,则该值与我的原始选取列表相同
for (var i=oSubPicklist.getOptions.length; i >= 0;i--)
{
if(oTempArray[i] != true)
{
Xrm.Page.getControl("new_product").removeOption(i);
}
}
想法
编辑:我解决了在onLoad事件中使用originalPickList声明全局变量的问题,并且:
oSubPicklist.clearOptions();
for (var i=0; i< oSubPicklist.originalPicklistValues.length; i++)
{
for (var j=0; j< oDesiredOptions.length; j++)
{
if (i == oDesiredOptions[j])
{oSubPicklist.addOption(oSubPicklist.originalPicklistValues[i]);}
}
}
oSubPicklist.clearOptions();
对于(变量i=0;i
您的代码对我来说不是很清楚:可能您可以粘贴所有的功能代码以便更好地理解,但是:
var myOptionSet = Xrm.Page.ui.controls.get("new_product") //get Control
var optionsSet = myOptionSet .getAttribute().getOptions(); //get Options
preferredTimeOptionSet.clearOptions(); //Clear all options
//Create a new Option
var opt1 = new Option();
opt1.text = "one";
opt1.value = 1;
//Add Option
myOptionSet.addOption(opt1);
//Remove Option
myOptionSet.removeOption(1);
下面是另一种处理父/子选择列表的方法:
函数dynamicDropdown(父、子){
filterPicklist(父级、子级);
}
函数parentListFilter(父级,id){
var过滤器=”;
如果(getParentCode(父项)!=“”){
过滤器=getParentCode(父级);
}否则{
//不匹配
}
回流过滤器;
}
函数过滤器picklist(父级、子级){
var parentList=Xrm.Page.getAttribute(parent.getValue();
var childListControlAttrib=Xrm.Page.getAttribute(child);
var childListOptions=childListControlAttrib.getOptions();
var childListControl=Xrm.Page.getControl(child);
var codeToFilterListOn=parentListFilter(父,父列表);
如果(codeToFilterListOn!=“”){
childListControl.clearOptions();
for(childListOptions中的var optionIndex){
var option=childListOptions[optionIndex];
//忽略xx并检查是否匹配
if(option.text.substring(0,2)!=“xx”&&option.text.indexOf(codeToFilterListOn)>-1){
childListControl.addOption(选项);
}
}
}否则{
//不匹配,全部显示?
}
}
函数getParentCode(父级){
//从内部[]动态获取父代码
var过滤器=”;
var parentValue=Xrm.Page.getAttribute(parent.getText();
if(parentValue&&parentValue.indexOf(“]”)1){
var parentCode=parentValue.substring(parentValue.indexOf(“[”)+1,parentValue.indexOf(“]);
if(父代码){
过滤器=父代码+“|”;
}else{}
}
回流过滤器;
}
谢谢。我只是想把CRM 4.0“翻译”到2011年,因为我有这样做的说明,但我接受了你的想法,它成功了。谢谢@邓伦很高兴这有帮助