CRM Dynamics如何过滤用户端的视图

时间:2013-09-27 07:38:11

标签: dynamics-crm-2011

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

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

有没有办法让用户决定他/她将会看到哪些List会员?它必须工作,一个下拉列表选择视图“在长列表中”和另一个下拉列表选择哪个LongList。

1 个答案:

答案 0 :(得分:1)

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

为了实现这一点,您需要采取一些步骤,首先,您无法添加额外的“下拉列表”,以允许用户选择要过滤的长列表。但是,您可以执行的操作是将一些自定义视图添加到查找窗口。所以你的目标是:在查找表单上展开“视图”选项列表。我们可以使用JavaScript为此添加自定义视图。

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

  • 您的实体被称为new_membernew_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答案:

How to add filtered view to Ribbon “Add Existing” button

从评论中更新。

有关开发人员培训和sdk的一些链接: