子网格的功能在不断的改进和增强,但有一个功能到目前为止官方还没有支持的实现方法,那就是子网格的筛选,本篇要分享的筛选只是列表显示的筛选,而不是数据源的查询筛选。
例如下面这张图,子网格中显示了三条维信号记录,但我想通过一定的维度比如名称进行筛选,只显示名称为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时的预筛选,目前还是无法做到。