Get Optionset in MS CRM

getOptionSet: function (entityLogicalName, attributeLogicalName, retrieveAsIfPublished) {
 var url = Xrm.Page.context.getServerUrl() + "/XRMServices/2011/Organization.svc/web";
 var MetadataId = "00000000-0000-0000-0000-000000000000";
 var request = "<Execute xmlns=\"http://schemas.microsoft.com/xrm/2011/Contracts/Services\" xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\">";
 request += "<request i:type=\"a:RetrieveAttributeRequest\" xmlns:a=\"http://schemas.microsoft.com/xrm/2011/Contracts\">";
 request += "<a:Parameters xmlns:b=\"http://schemas.datacontract.org/2004/07/System.Collections.Generic\">";
 request += "<a:KeyValuePairOfstringanyType>";
 request += "<b:key>EntityLogicalName</b:key>";
 request += "<b:value i:type=\"c:string\" xmlns:c=\"http://www.w3.org/2001/XMLSchema\">" + entityLogicalName + "</b:value>";
 request += "</a:KeyValuePairOfstringanyType>";
 request += "<a:KeyValuePairOfstringanyType>";
 request += "<b:key>MetadataId</b:key>";
 request += "<b:value i:type=\"ser:guid\" xmlns:ser=\"http://schemas.microsoft.com/2003/10/Serialization/\">" + MetadataId + "</b:value>";
 request += "</a:KeyValuePairOfstringanyType>";
 request += "<a:KeyValuePairOfstringanyType>";
 request += "<b:key>RetrieveAsIfPublished</b:key>";
 request += "<b:value i:type=\"c:boolean\" xmlns:c=\"http://www.w3.org/2001/XMLSchema\">" + retrieveAsIfPublished + "</b:value>";
 request += "</a:KeyValuePairOfstringanyType>";
 request += "<a:KeyValuePairOfstringanyType>";
 request += "<b:key>LogicalName</b:key>";
 request += "<b:value i:type=\"c:string\" xmlns:c=\"http://www.w3.org/2001/XMLSchema\">" + attributeLogicalName + "</b:value>";
 request += "</a:KeyValuePairOfstringanyType>";
 request += "</a:Parameters>";
 request += "<a:RequestId i:nil=\"true\" /><a:RequestName>RetrieveAttribute</a:RequestName></request>";
 request += "</Execute>";
 request = this._getSOAPWrapper(request);
 var req = new XMLHttpRequest();
 req.open("POST", url, false);
 req.setRequestHeader("Accept", "application/xml, text/xml, */*");
 req.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
 req.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/xrm/2011/Contracts/Services/IOrganizationService/Execute");
 req.send(request);

 if (req.responseXML != null) {
 if (Mscrm.Utilities.isChrome()) {
 if (window.DOMParser) {
 var parser, resultDoc;
 parser = new DOMParser();
 resultDoc = parser.parseFromString(req.responseText, "text/xml");
 // Webkit
 resultDoc = resultDoc.getElementsByTagName("value")[0];
 var attributeData = resultDoc;
 if (attributeData != null) {
 var attributeType = attributeData.getElementsByTagName("AttributeType")[0].textContent;
 switch (attributeType) {
 case "Picklist":
 return attributeData;
 break;
 default:
 break;
 }
 }
 }
 }
 else if (Mscrm.Utilities.isIE8() || Mscrm.Utilities.isIE9()) {
 var attributeData = req.responseXML.selectSingleNode("//b:value");
 if (attributeData != null) {
 var attributeType = attributeData.selectSingleNode("c:AttributeType").text;
 switch (attributeType) {
 case "Picklist":
 return attributeData;
 break;
 default:
 break;
 }
 }
 }
 else { 
 var attributeData = req.responseXML.getElementsByTagName("b:value")[0];
 if (attributeData != null) {
 var attributeType = attributeData.getElementsByTagName("c:AttributeType")[0].textContent;
 switch (attributeType) {
 case "Picklist":
 return attributeData;
 break;
 default:
 break;
 }
 }
 }
 }

 },

 _getSOAPWrapper: function (request) {
 var SOAP = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\"><soapenv:Body>";
 SOAP += request;
 SOAP += "</soapenv:Body></soapenv:Envelope>";
 return SOAP;
 },

Leave a comment