在Dynamics CRM 2016 *
中我已经将一个Lookup设置为依赖/过滤"父母"查找,使用开箱即用的表单编辑器。
因此,当我设置父Lookup时,它会根据父选择过滤子/依赖中的选项 - 正如预期/好。
问题:当我将父Lookup设置为空白时,过滤仍然存在,并继续按先前在父项中选择的内容限制相关的查找选项。我希望它会被移除,并且孩子的Lookup将不再受到限制。
有JS解决方案吗?我没有添加任何类型的自定义过滤器/视图(因为我使用开箱即用的过滤功能),所以我不确定是否可以删除任何内容以解决此问题。这是预期的行为吗?
答案 0 :(得分:2)
如果开箱即用的相关查找无法按您的方式工作。您可以删除它并通过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);
}