This is a very specialized piece of code, but it came together nicely, so I thought I would share it.
I have a SharePoint List that has a bunch of Microsoft CRM 2011 Contact GUIDs in it. Some columns have one GUID and others have multiple GUIDs separated by semicolons. My goal was: when a user visits the default view for this list, the GUIDs are looked up agains CRM and displayed as the contact’s full name. I wrote the following code to do just that. The 4th, 5th and 10th columns has guide in them. I use this method to loop through the column.
$('table.ms-listviewtable td:nth-child(4),table.ms-listviewtable td:nth-child(5),table.ms-listviewtable td:nth-child(10)').each(function () { var guids = $(this).text().split(";"); var names = '' $.each(guids, function () { var guid = this; var serverUrl = "http://crmserver.company.com" var ODATA_ENDPOINT = "/Organization/XRMServices/2011/OrganizationData.svc"; var ODATA_EntityCollection = "/ContactSet(guid'" + guid + "')"; var URL = serverUrl + ODATA_ENDPOINT + ODATA_EntityCollection $.ajax({ type: "GET", contentType: "application/json", datatype: "json", async: false, url: URL, beforeSend: function (XMLHttpRequest) { XMLHttpRequest.setRequestHeader("Accept", "application/json"); XMLHttpRequest.setRequestHeader("Content-Type", "application/json") }, success: function (data, textStatus, XmlHttpRequest) { names = names + data.d.FullName + "," } }); }); $(this).text(names.substring(0, names.length - 1)); });
Line 1: is the jQuery selector for all the columns that have GUIDs. And we loop through each of them.
Line 2: splits the contents of the column.
Line 4: loops through the all the GUIDs in each row/column
Lines 5-9: are setting up the CRM 2011 REST url for the ajax call
Lines 10-24: query the Microsoft CRM 2011 rest endpoint with the contact’s GUID and assign the full name to a variable
Line 25: displays the full name instead of the GUID.
Some slim code that works pretty well.