我正在將CRM 4解決方案升級到CRM 2011,我遇到了動態選項集的問題。在CRM 2011中使用Javascript從動態選項集(選擇列表)中獲取價值的問題
我通過調用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);
};
如上所述,這一切似乎工作。選取列表會填入值並且不會出錯。如果我在此過程中粘貼警報,則會顯示正確的值或標籤。
但是,不知怎的,項目似乎迷路了。如果我試圖以任何方式從表單中的其他地方引用它們,我會得到空白。我試過了;
Xrm.Page.getAttribute("list_name").getSelectedOption().value
...和這個;
Xrm.Page.getAttribute("list_name").getValue();
這兩者都沒有工作。我嘗試訪問文本而不是數值(只是作爲一個測試),但無法獲得這些數據。
但是,當我嘗試與包含靜態選項的選項集相同的方法時,我可以訪問它們沒有問題。
與我要去哪裏錯了,將不勝感激任何幫助......
我從您的問題中瞭解到,您已經將所有選項集列表存儲在名爲「varPicklist」的變量中。對 ? 比你想要做的?不夠清楚 – mzh
不,我正在做的是我從窗體上的一個空的選項集控件開始。然後在Form Load上,Javascript調用一個API。這將返回一個XML對象,其中包含所有選項。然後,我循環選項,創建一個選項對象,並將它們添加到列表中,一次一個。然後在表單中,我嘗試引用列表中的選項。問題是,我無法在這一點上引用這些選項。 – odinel