2016-05-03 8 views
1

Я пытаюсь отфильтровать продукт, чтобы облегчить поиск конкретного продукта. Цель состоит в том, чтобы иметь цепочку зависимых опционных наборов, которая заканчивается в поле поиска, которое отображает только записи с предыдущими значениями. Продукты - это все учебники. Цепь идет как например:Как фильтровать Lookups с помощью зависимых наборов опций?

-Grade -Language -Editorial -компонентного (например, учебник, рабочей книги, атлас и т.д.) -Продукт Поиск

Все предыдущие значения наборов опций, которые доступны в форме продукта, поскольку каждый учебник имеет уровень оценки, язык, редакцию и компонент.

Я нашел, как реализовать зависимые наборы параметров и отфильтрованные поисковые запросы в Интернете, но я не могу найти способ связать их. Я попытался использовать только отфильтрованные поисковые запросы, но, похоже, это будет работать, только если я создам отдельные объекты для класса, языка, редактора и компонента и свяжу их все.

Есть ли у кого-нибудь представление о том, как я могу достичь своей цели?

ответ

2

Вы можете получить значения наборов опций, а затем использовать метод addPreSearch для фильтрации поиска.

Ваш код может быть похож на приведенный ниже код:

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

Спасибо. Это было очень полезно. –