【发布时间】:2017-10-06 16:29:20
【问题描述】:
我正在将 CRM 4 解决方案升级到 CRM 2011,但我遇到了动态选项集的问题。
我通过从 Javascript 调用 API 来填充选项集。这会返回一个文本和值选项列表,然后我会对其进行迭代。
首先,我检索对象本身并将静态默认选项添加到列表中:
var varPicklist = Xrm.Page.getControl("list_name");
//Add a System Default option to the picklist
var opt1 = new Option();
opt1.text = "System Default";
opt1.value = 100000;
varPicklist.addOption(opt1);
然后我遍历集合,创建一个对象并将每个对象添加到列表中:
//Populate the rest of the list
var ObjectList = xmlDoc.getElementsByTagName("LookupItem");
for (var i = 0 ; i < ObjectList.length ; i++)
{
var optValue
var optText
var ObjectListItems = ObjectList[i].childNodes;
for (var j = 0 ; j < ObjectListItems.length ; j++)
{
var value = ObjectListItems[j].childNodes[0];
if (ObjectListItems[j].nodeName == "Key")
{
optValue = value.nodeValue;
}
else if (ObjectListItems[j].nodeName == "Value")
{
optText = value.nodeValue;
}
}
var opt = new Option();
opt.text = optText;
opt.value = optValue;
varPicklist.addOption(opt);
};
如前所述,这一切似乎都有效。 Picklist 会填充这些值并且不会出错。如果我在此过程中在其中粘贴警报,则会显示正确的值或标签。
但是,不知何故,这些物品似乎在途中丢失了。如果我试图从表单的其他地方以任何方式引用它们,我会得到空值。我试过这个;
Xrm.Page.getAttribute("list_name").getSelectedOption().value
...还有这个;
Xrm.Page.getAttribute("list_name").getValue();
这两种方法都不起作用。我尝试访问文本而不是值(仅作为测试),但也无法获得这些值。
但是当我尝试使用包含静态选项的选项集的相同方法时,我可以毫无问题地访问它们。
如果我在哪里出错,我们将不胜感激......
【问题讨论】:
-
我从您的问题中了解到,您已经将所有选项集列表存储在一个名为“varPicklist”的变量中。对 ?比你想做什么?不够清楚
-
不,我正在做的是从表单上的一个空选项集控件开始。然后在 Form Load 上,Javascript 调用一个 API。这将返回一个 XML 对象,其中包含所有选项。然后,我遍历选项,创建一个 Option 对象,并将它们添加到列表中,一次一个。然后稍后在表单中,我尝试引用列表中的选项。问题是,我现在无法引用这些选项。
标签: javascript dynamics-crm dynamics-crm-2011 crm optionsettype