2016-05-04 13 views
0

Ich versuche, ein Nachschlagefeld products mit einem anderen Nachschlagefeld zu filtern editorial (meine Firma verkauft Lehrbücher).Wie übergebe ich Lookup-Objektwerte an eine FetchXml-Abfrage?

Ich weiß, wie Sie Werte aus dem Lookup-Objekt abrufen, aber ich weiß nicht, wie Sie sie in meine fetchXml-Abfrageanweisung übergeben.

function preFilterLookup() 
{ 
    Xrm.Page.getControl("new_editorialsearch").addPreSearch(function() { 

     var ediObject = Xrm.Page.getAttribute("new_editorialsearch").getValue(); 

     // Get the lookup Object, and extract the Value (ID and Text) 
     if(ediObject != null) 
     { 
      var ediTextValue = ediObject[0].name; 
      var ediID = ediObject[0].id; 

      // Filter products by editorial 
      fetchXml = "<filter type='and'><condition attribute='name' operator='eq' value='" + ediTextValue + "' /></filter>"; 

      // Apply the filter to the field 
      Xrm.Page.getControl("new_engpro").addCustomFilter(fetchXml); 
     }   
    }); 
} 

Ich weiß, ich bin etwas falsch zu machen, weil CRM sagt mir, meine Funktion nicht definiert ist, und ich kann keinen Syntaxfehler sehen.

Kann mir bitte jemand den richtigen Weg sagen, den Objektnamen und die ID in die fetchXml-Anweisung zu übergeben?

+0

Wenn Sie eine Funktion erhalten, ist ein undefinierter Fehler, es ist wahrscheinlich kein Problem mit dem Abruf, sondern eher ein Problem mit, wie Sie 'preFilterLookup' nennen. Setzen Sie eine 'console.log (" running ");' Anweisung am Anfang Ihrer Funktion, um sicherzustellen, dass sie tatsächlich ausgeführt wird. Wenn Sie damit nicht überfordert sind, geben Sie bitte die Fehlermeldung an, die Sie erhalten, und teilen Sie uns mit, wie Sie die Veranstaltung verkabeln. – Polshgiant

+0

Ursprünglich war es 'onLoad', aber ich setzte es auf 'onChange' für 'Editorial' und es gibt mir keinen Fehler, aber es tut auch nicht, was ich will. 'console.log ("running")' zeigt ** running ** an, damit die Funktion ausgeführt wird. Ist meine 'fetchXml' korrekt? Übertrage ich die Daten korrekt? –

+0

Ich bekomme nicht mehr den Fehler 'onLoad', aber es wird nicht gefiltert. Ich habe eine Log-Anweisung in die 'if' Anweisung geschrieben und es wird nichts angezeigt. Die 'if' Anweisung scheint 'Null' zu liefern, obwohl das Feld einen Wert hat. Mache ich etwas falsch? –

Antwort

0

addCustomFilter kann nur aus dem addPreSearch Ereignis der gleichen Kontrolle aufgerufen werden. Anstatt also addPreSearch unter new_editorialsearch anzurufen, rufen Sie sie unter new_engpro an.