Я обновляю решение CRM 4 до CRM 2011, и у меня возникла проблема с динамическим набором опций.
Я заполняю набор параметров, вызывая API из Javascript. Это возвращает список вариантов текста и значений, которые я затем просматриваю.
Во-первых, я извлекаю сам объект и добавляю в список статический параметр по умолчанию:
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);
};
Как уже говорилось, все это работает. Список выбора заполняется значениями и не вызывает ошибок. Если я вставлю туда предупреждение во время этого процесса, отобразятся правильные значения или метки.
Однако почему-то кажется, что предметы теряются по пути. Если я попытаюсь ссылаться на них каким-либо образом из другого места в форме, я верну ноль. Я пробовал это;
Xrm.Page.getAttribute("list_name").getSelectedOption().value
...и это;
Xrm.Page.getAttribute("list_name").getValue();
Ни то, ни другое не сработало. Я попытался получить доступ к тексту, а не к значениям (просто в качестве теста), но тоже не смог их получить.
Но когда я попробовал те же методы с наборами параметров, которые содержали статические параметры, я без проблем смог получить к ним доступ.
Любая помощь с тем, где я ошибаюсь, будет оценена ...