页面上有一个Lookup field,当选择一个记录时,同时要把这个记录的其他值也带到本页面来,其中有好多是Lookup来的。
开始我用LinkEntity来取得它们的名字值,但是后来发现LinkEntity有数量限制,每条查询语句只能有10个LinkEntity,超过就报错,Advanced Find里也是一样的。
所以,用LinkEntity并不是一个好办法,而且我只是要取得一个名字的值而已,直觉告诉我不用那么麻烦的。
研究了一下,其实Fetchxml取的Lookup的值,不仅有GUID,名字的值也取到了,只不过名字值要经过一定的步骤转化才能拿到。
下面是具体方法:
首先,我们从返回的xml对象中取出我们的要的元素:
var county = oXmlDoc.getElementsByTagName("my_county")[0];
调用一个方法来取得名字值:
var countyName= GetAttributeName(county);
GetAttributeName方法,其实就是把字符串转化为Xml Node,再对里面的属性进行分析,得到我们要的那个属性的值:
function GetAttributeName(xmlNode) { var xmlStr = xmlNode.xml; var doc; if (window.ActiveXObject) { doc = new ActiveXObject('Microsoft.XMLDOM'); doc.async = 'false'; doc.loadXML(xmlStr); } else { var parser = new DOMParser(); doc = parser.parseFromString(xmlStr, 'text/xml'); } var name = doc.documentElement.attributes.getNamedItem("name").text; return name; }
好的,这样Id和Name都有了,就可以给目标设值了。