Dynamics CRM 子网格显示筛选的实现(unsupported方法)

    子网格的功能在不断的改进和增强,但有一个功能到目前为止官方还没有支持的实现方法,那就是子网格的筛选,本篇要分享的筛选只是列表显示的筛选,而不是数据源的查询筛选。

     例如下面这张图,子网格中显示了三条维信号记录,但我想通过一定的维度比如名称进行筛选,只显示名称为vic的记录,目前来说并没有支持的开发方法来实现这个功能,但要实现这个效果不受支持的开发方式是可以实现的。

    首先在页面的onload的事件中加入下面这行代码,其中'prewechat'就是你子网格的唯一名称,这行代码是调用的子网格提供的api,为子网格的onload的事件绑定一个function

Xrm.Page.getControl("prewechat").addOnLoad(UpdateContactSubGrid);

    下面这个是方法体,我这的逻辑就是显示子网格中对应实体数据name为vic的。

function UpdateContactSubGrid() {
    var grid = window.parent.document.getElementById('prewechat').control;
    var fetchXML = '<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="false">' +
        '<entity name="new_mediaact">' +
        '<attribute name="new_mediaactid" />' +
        '<attribute name="new_name" />' +
        '<attribute name="createdon" />' +
        '<order attribute="new_name" descending="false" />' +
        '<filter type="and">' +
        '<condition attribute="new_name" operator="eq" value="vic" />' +
        '</filter>' +
        '</entity>' +
        '</fetch>';
    if (grid.SetParameter) {
        grid.SetParameter("fetchXml", fetchXML);
        grid.Refresh();
    }
    else
        grid.get_innerControl().setParameter("fetchXml", fetchXML);
}

    看下过滤后的结果,这个过滤只是对显示的过滤,我这里的子网格是N:N的,如果我想实现query时的预筛选,目前还是无法做到。

猜你喜欢

转载自blog.csdn.net/woniu1104913/article/details/81333433