我试图限制用户可以从约会表单的“关于”字段中选择的实体,并设置这些查找字段使用的一些默认视图。
这个字段可以在许多实体中查找,例如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值只是为弹出窗口更改的。
我正在寻找的解决方案需要执行以下操作:
-
-
它在实现后不需要任何维护,例如。
如果新实体被引入“关于”字段。
-
它应该是通用的-我可能希望能够参数化它,并在其他形式上使用它
-
它应该仅在用户打开弹出搜索窗口时应用默认视图更改
有可能吗?