我有3个实体,如Member,LongList和ShortList。两个列表都与成员实体具有多对多关系。我将成员添加到LongLists,并且可以在多个LongLists中添加成员。
用户将从他/她将选择的LongList的成员创建ShortLists。我可以根据特定LongList的成员资格创建过滤成员的视图,但我无法在用户端进行此选择,我只能为每个创建的LongList创建不同的视图,这不是一个好的情况,因为LongLists也是由用户创建。
有没有办法让用户决定他/她将会看到哪些List会员?它必须工作,一个下拉列表选择视图“在长列表中”和另一个下拉列表选择哪个LongList。
答案 0 :(得分:1)
简短的回答是,如果没有JavaScript的帮助,你就无法做到这一点。
为了实现这一点,您需要采取一些步骤,首先,您无法添加额外的“下拉列表”,以允许用户选择要过滤的长列表。但是,您可以执行的操作是将一些自定义视图添加到查找窗口。所以你的目标是:在查找表单上展开“视图”选项列表。我们可以使用JavaScript为此添加自定义视图。
首先,让我举一个如何执行此自定义视图部分的示例。对于我们的例子,我做了以下假设:
new_member
,new_shortlist
和new_longlist
。 添加自定义视图的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答案:
How to add filtered view to Ribbon “Add Existing” button
从评论中更新。
有关开发人员培训和sdk的一些链接: