Dynamics CRM - удаление зависимого фильтра поиска, когда родительский поиск пуст
В Dynamics CRM 2016*
Я установил Lookup для зависимости / фильтрации для "родительского" Lookup, используя готовый редактор форм.
Таким образом, когда я устанавливаю родительский Lookup, он фильтрует выбор в потомке / зависит от родительского выбора - как положено / хорошо.
Проблема: когда я устанавливаю пустой родительский Lookup, фильтрация остается и продолжает ограничивать выбор зависимого Lookup тем, что было ранее выбрано в родительском. Я надеялся, что он будет удален и что дочерний Lookup больше не будет ограничен.
Есть ли решение JS? Я не добавляю какой-либо пользовательский фильтр / представление (поскольку я использую готовую фильтрацию), поэтому я не уверен, что смогу удалить что-либо, чтобы это исправить. Это ожидаемое поведение?
1 ответ
Если встроенный зависимый поиск не работает так, как вы хотите. Вы можете удалить его и отфильтровать ваш поиск вручную через JavaScript. Если вы используете приведенный ниже код, ваш дочерний поиск будет отфильтрован при заполнении родительского поиска. Когда родительский поиск очищен, фильтр также будет удален из дочернего поиска.
function OnChange_ParentLookup() {
// Manually add pre Search event
// Check if parent lookup is emptied or filled.
if (Xrm.Page.getAttribute("parentLookup").getValue() != null) {
// Remove the previous filter if changing the parent lookup to another value without clearing it first.
Xrm.Page.getControl("childLookup").removePreSearch(addCustomFilterToChildLookup);
Xrm.Page.getControl("childLookup").addPreSearch(addCustomFilterToChildLookup);
}
else {
Xrm.Page.getControl("parentLookup").removePreSearch(addCustomFilterToChildLookup);
}
}
function addCustomFilterToChildLookup() {
// Check if parent lookup is not empty.
// Use value in parent lookup to filter child lookup
var parentLookup = Xrm.Page.getAttribute("parentLookup").getValue();
if (parentLookup == null || parentLookup.length <= 0) return;
// attribute = the field on the child entity that references the parent entity
// uitype = entity name of parent lookup
// value = GUID of the parent lookup
var childLookupFilter = "<filter type='and'><condition attribute='parentLookup' operator='eq' uitype='parentLookupEntityName' value='" + parentLookup[0].id + "' /></filter>";
Xrm.Page.getControl("childLookup").addCustomFilter(childLookupFilter);
}