我试图限制用户可以从“约会”表单的“关于”字段中选择的实体,并设置这些查找字段使用的一些默认视图。
一个大想法是,当用户在字段本身中输入数据时,应从默认视图中提供此查询的结果,例如“我关注的联系人”,但是当用户输入“查找更多记录”弹出窗口时,默认视图应切换为“所有联系人”。
此字段可以在许多实体中查找,例如帐户,联系人,帐单等,我想将其严格限制为仅帐户。
1)将过滤器添加到查找字段,以便不显示任何不满足给定条件的记录。使用addPreSearch
库中的Xrm
JS函数来完成此操作,如下所示:
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)限制它们很麻烦,必须创建尽可能多的过滤器,然后将它们一个接一个地应用于领域似乎不是正确的方法。但是,按照我的实现方式,默认的视图行为可以按预期方式工作-只是在弹出窗口中更改了输入值。
解决方案2)更易于实现,并且如果将来将任何新实体添加到与“关于”字段的关系中,则将来不需要进行任何更改,但是默认视图同时应用于“现场”和“弹出式”默认视图。
我正在寻找的解决方案需要执行以下操作:
有可能吗?
我正在实现此功能的CRM版本是8.2本地。