2016-05-04 3 views
0

Я пытаюсь отфильтровать поле поиска products с другим полем поиска editorial (моя компания продает учебники).Как передать значения объекта поиска в запрос FetchXml?

Я знаю, как извлекать значения из объекта поиска, но я не знаю, как передать их в мой запрос запроса fetchXml.

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); 
     }   
    }); 
} 

Я знаю, что я делаю что-то неправильно, потому что CRM продолжает говорить мне, что моя функция не определена, и я не вижу каких-либо ошибок синтаксиса.

Может кто-нибудь, пожалуйста, сообщите мне правильный способ передать имя и идентификатор объекта в оператор fetchXml?

+0

Если вы получаете функцию undefined error, это, вероятно, не проблема с выборкой, а скорее проблема с тем, как вы вызываете 'preFilterLookup'. Поместите инструкцию 'console.log (« running »);' в начале вашей функции, чтобы убедиться, что она фактически выполняется. Если это не приведет вас к горбу, предоставьте сообщение об ошибке, которое вы получаете, а также сообщите нам, как вы подключаете событие. – Polshgiant

+0

Первоначально это было «onLoad», но я установил его в onChange для «редакционной», и он не дает мне ошибку, но он не делает того, что я хочу. 'console.log ("running")' показывает ** работает **, поэтому функция выполняется. Правильно ли мой fetchXml? Правильно ли передаю данные? –

+0

Я больше не получаю ошибку 'onLoad', но не фильтрует. Я поставил оператор журнала внутри оператора «if», и он ничего не отображает. Кажется, что выражение «if» возвращает «null», хотя поле имеет значение. Я делаю что-то неправильно? –

ответ

0

addCustomFilter может быть вызван только из события addPreSearch того же элемента управления. Поэтому вместо того, чтобы звонить addPreSearch по номеру new_editorialsearch, позвоните по номеру new_engpro.