简短的回答是,如果没有一些 JavaScript 的帮助,您将无法做到这一点。
您需要采取一些步骤来实现这一点,首先您不能添加额外的“下拉菜单”以允许用户选择要过滤的长列表。但是,您可以将一些自定义视图添加到查找窗口。所以您的目标是:在查找表单上展开“视图”选项列表。我们可以使用 JavaScript 向其中添加自定义视图。
首先,让我给你一个如何做这个自定义视图部分的例子。对于我们的示例,我做了以下假设:
- 你的实体被称为
new_member
,new_shortlist
和new_longlist
。
- 出于此 JavaScript 函数的目的,我将向您展示如何将其添加到查找字段,但我希望您希望将其连接到按钮而不是查找字段。
- 最后,您传入的参数将是您从 CRM 检索到的长列表实体(使用 ajax/odata 调用或类似方法)。我会(可能错误地)假设你已经知道如何做到这一点。
添加自定义视图的 JavaScript 将如下所示:
function addCustomLonglistView(longlist) {
// Create a view id and a view name
var viewId = "{A2D479C5-53E3-4C69-ADDD-802327E67A0D}";
var viewDisplayName = longlist.New_Name + " members";
// Prepare the fetch xml for the lookup view
var fetchXml =
'<fetch mapping="logical" count="250" version="1.0">' +
'<entity name="new_member">' +
'<attribute name="new_memberid" />' +
'<attribute name="new_name" />' +
'<link-entity name="new_longlist" from="new_memberid" to="new_memberid">' +
'<filter>' +
'<condition attribute="new_longlistid" operator="eq" value="' + longlist.Id + '" />' +
'</filter>' +
'</link-entity>' +
'</entity>' +
'</fetch>';
var layoutXml = '<grid name="resultset" object="1" jump="new_name" select="1" icon="1" preview="1"><row name="result" id="new_memberid"><cell name="new_name" width="300" /></row></grid>';
Xrm.Page.getControl("new_memberfield").addCustomView(viewId, "new_member", viewDisplayName, fetchXml, layoutXml, true);
Xrm.Page.getControl("new_memberfield").setDefaultView(viewId);
}
这让你成为其中的一部分。缺少的部分是如何将其添加到按钮?这有点棘手。谢天谢地,我找到了另一个应该为您回答这个问题的 stackoverflow 答案:
如何将过滤视图添加到功能区“添加现有”按钮
从评论更新。
有关开发人员培训和 sdk 的一些链接: