Dynamics CRM - удаление зависимой фильтрации поиска, если родительский поиск пуст

В Dynamics CRM 2016 *

Я установил для поиска зависимость / фильтрацию от «родительского» поиска с помощью готового редактора форм.

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

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

Есть ли JS-решение? Я не добавляю никаких пользовательских фильтров / представлений (поскольку я использую встроенную фильтрацию), поэтому я не уверен, что смогу удалить что-нибудь, чтобы исправить это. Это ожидаемое поведение?


person Don Cheadle    schedule 06.05.2016    source источник


Ответы (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);
}
person Yacine Zine    schedule 09.05.2016