2016-07-08 13 views
2

Ich habe drei Einheiten - 1. "Registrierung" 2. "Event" 3. "Event Category"dynamics crm mit odata, um eine GUID von "Typ: Microsoft.Crm.Sdk.Data.Services.EntityReference"

Beim Speichern eines Registrierungseintrags möchte ich die GUID des ausgewählten "Ereignisses" verwenden, um die GUID der zugeordneten "Ereigniskategorie" abzurufen. Ich glaube, mein Problem beim Abrufen der "Ereigniskategorie" -Guid ist, weil die Suche der Ereigniskategorie eine EntityReference ist. Ich bin mir nicht sicher, wie ich meine odata-Abfrage erstellen soll, um nur die GUID der Ereigniskategorie abzurufen.

Mein Code der OData URL zu erstellen ist wie folgt:

function getAssociatedEventId() { 
var eventId = getEventId(); 
retrieveMultiple("new_eventclassSet", "?$select=new_EventCategoryId&$expand=new_new_eventcategory_new_eventclass/new_eventcategoryId&$filter=new_eventclassId eq (guid'" + eventId + "')", findEventQuestions, null, null); 
} 

function retrieveMultiple(odataSetName, filter, successCallback, errorCallback, _executionObj) { 

var serverUrl = Xrm.Page.context.getClientUrl(); 
var ODATA_ENDPOINT = "/XRMServices/2011/OrganizationData.svc"; 

var odataUri = serverUrl + ODATA_ENDPOINT + "/" + odataSetName; 
if (filter) { 
odataUri += filter; 
} 

Zuerst habe ich das Ereignis-ID durch eine Javascript-Funktion in einer Web-Ressource zu erhalten, und dann würde ich hoffen, dass die Verwendung der ID abrufen der Ereigniskategorie, die dem Ereignis zugeordnet ist. Wenn mein Code ausgeführt wird, ruft er die Funktion successCallback auf, aber die Daten geben "undefined" zurück. Ich glaube, das liegt daran, dass die Datenantwort, die ich mit der von mir erstellten URL erhalte, eine Entity-Referenz liefert. Ich bin mir nicht sicher, wie ich die URL erstellen soll, um die ID festzulegen. Ich habe ein Bild der Registerkarte "Antwort" von der Entwicklerkonsole eingefügt. Hoffentlich hilft das. Vielen Dank für jede Eingabe.

Data Response from Developer's Console

+0

Die Antwort ist nur serialisiert, der Rückgabetyp stimmt mit der Beziehung (1: N) des Typs EntityReference überein, warum parst du den JSON nicht und lies den "Id" -Wert? – dynamicallyCRM

Antwort

0

Rückkehr eines EntityReference ist normal und zu erwarten. Extrahieren Sie einfach die Id, z. EntityReference.Id, das ist die Guid Ihres Datensatzes.

+0

Danke für Ihre Antwort. Ich bin mir nicht sicher, wo ich die ID extrahieren soll. Ich verwende einen jQuery Ajax-Aufruf, um die Daten abzurufen. Meine aktuelle successCallback-Funktion ist wie folgt (nur um zu überprüfen, ob die Daten definiert sind): 'function findRegQuestions (Daten, TextStatus, XmlHttpRequest) { var totalCount = Daten [0] .new_EventCategoryId.results.length; document.getElementById ("regQuestions"). InnerText = totalCount; } '. Die fettgedruckte Linie ist, wo ich vermasseln denke ich. Ich benutze "new_EventCategoryId", weil das ist, was ich in meinem Filter auswähle. Ich habe 'EntityReference.Id' versucht, bevor .results vergeblich. –

0

Wenn der OData-Dienst ist die Protokollversion V4, die richtige Abfrage-URL sollte sein:

$filter=new_eventclassId/Id eq 4c2c1c1e-1838-42ca-b730-399816de85f8 

Hinweis das Fehlen von einfachen Anführungszeichen Guid.