Я хочу отфильтровать поиск по нескольким полям в одной форме. Проблема заключается в том, что только последний обработчик событий, который я добавил, применим ко всем полям. Для этого я хотел использовать контекст, чтобы получить поле, которое в настоящее время используется. Но фильтры применяются в событии «onload» формы, где у меня нет выбранного контекста/поля.Отфильтрованный поиск нескольких полей
Для этого я использую этот код:
function preFilterLookupFunction(executionContext)
{
var fieldname = new Array("field1","field2");
fLen = fieldname.length;
for (i = 0; i < fLen; i++)
{
var tempName = fieldname[i];
Xrm.Page.getControl(tempName).addPreSearch(function()
{
addLookupFilterFunction(executionContext);
});
}
}
function addLookupFilterFunction(executionContext)
{
var attribute = executionContext.getEventSource();
var tempFieldName = attribute.getName();
alert(tempFieldName)
var condition = Xrm.Page.getAttribute("fieldContition").getValue();
if (condition != null)
{
var fetchXml = "<filter type='and'><condition attribute='fieldContition' operator='eq' value='" + condition + "' /></filter>";
Xrm.Page.getControl(tempFieldName).addCustomFilter(fetchXml);
}
}
Мой вопрос: можно ли получить контекст в addLookupFilterFunction
во время выполнения, так что я могу установить фильтр в правом поле? Или есть лучший способ фильтровать несколько полей в одной форме?
Nice ПИК Twiebie. – user7393973
Вам нужно применить тот же фильтр к более чем одному поиску в форме? Правильно ли я понял? (Кстати: это тот самый код, который я бы написал сначала) – Alex
@Alex да, действительно. но я не хочу добавлять обработчик событий для каждого поля отдельно. – Twiebie