2016-05-03 22 views
1

Ich versuche, auf ein Produkt zu filtern, um Benutzern die Suche nach einem bestimmten Produkt zu erleichtern. Das Ziel besteht darin, eine Kette abhängiger Optionssätze zu haben, die in einem Suchfeld endet, in dem nur Datensätze mit den vorherigen Werten angezeigt werden. Die Produkte sind alle Lehrbücher. Die Kette geht als solche:Wie kann ich Lookups mit abhängigen Optionssätzen filtern?

-grade -Sprache -Editorial -Komponenten (. ZB Lehrbuch, Arbeitsbuch, atlas, etc) -Produkt Lookup

Alle bisherigen Werte sind Optionsgruppen, die verfügbar sind auf dem Produktformular, da jedes Lehrbuch eine Klassenstufe, Sprache, Editorial und Komponente hat.

Ich habe gefunden, wie man abhängige Optionssätze und gefilterte Lookups online implementiert, aber ich finde keine Möglichkeit, die beiden zu verbinden. Ich habe versucht, nur gefilterte Lookups zu verwenden, aber es scheint, dass das nur funktioniert, wenn ich separate Entitäten für Grade, Sprache, Editorial und Component erstelle und sie alle in Beziehung setze.

Hat jemand eine Idee, wie ich mein Ziel erreichen kann?

Antwort

2

Sie können die Werte der Optionssätze abrufen und anschließend die Methode addPreSearch verwenden, um die Suche zu filtern.

Ihr Code könnte unten, um den Code ähneln:

function preFilterLookup() { 
Xrm.Page.getControl("productfield").addPreSearch(function() { 
    addLookupFilter(); 
}); 
} 

function addLookupFilter() { 
var grade = Xrm.Page.getAttribute("gradefield").getValue(); 
var language = Xrm.Page.getAttribute("languagefield").getValue(); 
var editorial = Xrm.Page.getAttribute("editorialfield").getValue(); 
var component = Xrm.Page.getAttribute("component").getValue(); 

var fetchXml = ""; 

if (grade != null) 
    fetchXml += "<filter type='and'><condition attribute='gradefield' operator='eq' value='" + grade + "' /></filter>"; 

if (language != null) 
    fetchXml += "<filter type='and'><condition attribute='languagefield' operator='eq' value='" + language + "' /></filter>"; 

if (editorial != null) 
    fetchXml += "<filter type='and'><condition attribute='editorialfield' operator='eq' value='" + editorial + "' /></filter>"; 

if (component != null) 
    fetchXml += "<filter type='and'><condition attribute='component' operator='eq' value='" + component + "' /></filter>"; 

Xrm.Page.getControl("productfield").addCustomFilter(fetchXml); 
} 
+0

Danke. Das war sehr hilfreich. –