代码之家  ›  专栏  ›  技术社区  ›  Asunez

Dynamics CRM限制约会窗体上仅1个实体的“关于”查找字段,并为“查找范围”设置默认视图

  •  0
  • Asunez  · 技术社区  · 7 年前

    我试图限制用户可以从约会表单的“关于”字段中选择的实体,并设置这些查找字段使用的一些默认视图。

    这个字段可以在许多实体中查找,例如Account、Contact、Billing等,我想严格限制它仅限于Accounts。

    到目前为止,我找到了两种方法:

    1) 向查找字段添加筛选器,以便不显示任何不符合给定条件的记录。这是通过使用 addPreSearch JS函数来自 Xrm

    var addEventHandler = function (defaultView) {
        Xrm.Page.getControl("contactid").addPreSearch(function () {
            addFilter("contactid", defaultView) 
        });
    }
    
    var addFilter = function (entityName, defaultView) {
        var filterXml = "<filter type = 'and'>" +
                            "<condition attribute='contactid' operator='null'/>" +
                        "</filter>";
    
        Xrm.Page.getControl("contactid").addCustomFilter(filterXml, "contact");
        Xrm.Page.getControl("contactid").setDefaultView(defaultView);
    }
    

    (这只是示例代码,实际上不应用于相关字段)

    2) 第二种选择是通过使用 setLookupTypes

    var limitLookupEntities = function () {
        Xrm.Page.getAttribute("contactid").setLookupTypes(["contact"]);
    }
    
    var changeDefaultViewForLookup = function(viewGuid){
        Xrm.Page.getControl("contactid").setDefaultView(viewGuid);
    }
    

    问题是:

    问题是,如前所述,“关于”字段可以在许多实体中查找。使用解决方案1)限制它们是乏味的,必须创建尽可能多的过滤器,并将它们逐个应用于字段似乎不是正确的方法。然而,在我实现这一点的方式中,默认的视图行为是按预期的方式工作的——look-in值只是为弹出窗口更改的。

    我正在寻找的解决方案需要执行以下操作:

    1. 它在实现后不需要任何维护,例如。 如果新实体被引入“关于”字段。
    2. 它应该是通用的-我可能希望能够参数化它,并在其他形式上使用它
    3. 它应该仅在用户打开弹出搜索窗口时应用默认视图更改

    有可能吗?

    0 回复  |  直到 7 年前