1

我有 3 个实体,例如 Member、LongList 和 ShortList。两个列表都与成员实体具有多对多关系。我将Members添加到LongLists中,Members可以添加到多个LongLists中。

用户将从他/她将选择的 LongList 的成员中创建 ShortLists。我可以根据特定 LongList 的成员资格创建用于过滤成员的视图,但我无法在用户端进行此选择,我只能为创建的每个 LongList 创建不同的视图,这不是一个好情况,因为 LongLists 也是由用户创建。

有没有办法让用户决定他/她要查看哪些列表成员?它必须像这样工作,一个下拉列表选择视图“在长列表中”,另一个下拉列表选择哪个 LongList。

4

1 回答 1

1

简短的回答是,如果没有一些 JavaScript 的帮助,您将无法做到这一点。

您需要采取一些步骤来实现这一点,首先您不能添加额外的“下拉菜单”以允许用户选择要过滤的长列表。但是,您可以将一些自定义视图添加到查找窗口。所以您的目标是:在查找表单上展开“视图”选项列表。我们可以使用 JavaScript 向其中添加自定义视图。

首先,让我给你一个如何做这个自定义视图部分的例子。对于我们的示例,我做了以下假设:

  • 你的实体被称为new_member,new_shortlistnew_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 的一些链接:

于 2013-10-02T12:37:53.717 回答