Динамика CRM rempovePresearch фильтр не работает - PullRequest
0 голосов
/ 14 апреля 2020

В моем случае есть поиск, и на основании этого мне нужно заполнить второй поиск. Например, может быть поиск страны и штата. Мой код работает в первый раз, но если я очищаю значение родительского поиска во второй раз, дочернее значение поиска не заполняется. При проверке inte rnet он говорит, что я не использую фильтр RemovePresearch должным образом. Я также использовал анонимную функцию, но ни одна из них не работает. Я связываю эту функцию с onChangeEvent родительского элемента управления.

 function SetProductSubClassFieldFromProductLookup(executionContext) {
var formContext = executionContext.getFormContext();
// Get the data value of the Associate lookup after the Associate is selected.
var childControlName = "childControlName";
var parentControlName = "parentControlName";

if (formContext.getAttribute(parentControlName) != null) {
    var productClass = formContext.getAttribute(parentControlName).getValue();
}
if (productClass !== null) {
    Xrm.Page.getControl(childControlName).removePreSearch(function () {
        addLookupFilter(childControlName, productClass[0].id);
    });
    Xrm.Page.getControl(childControlName).addPreSearch(function () {
        addLookupFilter(childControlName, productClass[0].id);
    });
}

}

 function addLookupFilter(fieldname, guid) {
var filterCriteria = "<filter type = 'and' >" +
    " <condition attribute='productclassid' value='" + guid + "' operator='eq' />" +
        " </filter >";
Xrm.Page.getControl(fieldname).addCustomFilter(filterCriteria);

}

Если кто-то сталкивается с подобной проблемой, проверьте код ниже. , Мое наблюдение: Невозможно передать любой параметр в функцию (addLookupFilter), кроме executeContext, поскольку он передается по умолчанию системой.

 var childControlName = "childControlName ";
 var parentControlName = "parentControlName ";
function SetProductSubClassFieldFromProductLookup(executionContext) {
var formContext = executionContext.getFormContext();

if (formContext.getAttribute(parentControlName) != null) {
    var productClass = formContext.getAttribute(parentControlName).getValue();
}
if (productClass !== null) {
    formContext.getControl(childControlName).removePreSearch(addLookupFilter);
    formContext.getControl(childControlName).addPreSearch(addLookupFilter);
}

};

function addLookupFilter(executionContext) {
var formContext = executionContext.getFormContext();
var productClass = formContext.getAttribute(parentControlName).getValue();
var filterCriteria = "<filter type = 'and' >" +
    " <condition attribute='productclassid' value='" + productClass[0].id + "' operator='eq' />" +
        " </filter >";
formContext.getControl(childControlName).addCustomFilter(filterCriteria);

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...