Dynamics CRM 子網格顯示篩選的實現(unsupported方法)

vic0228發表於2018-08-02

    子網格的功能在不斷的改進和增強,但有一個功能到目前為止官方還沒有支援的實現方法,那就是子網格的篩選,本篇要分享的篩選只是列表顯示的篩選,而不是資料來源的查詢篩選。

     例如下面這張圖,子網格中顯示了三條微訊號記錄,但我想通過一定的維度比如名稱進行篩選,只顯示名稱為vic的記錄,目前來說並沒有支援的開發方法來實現這個功能,但要實現這個效果不受支援的開發方式是可以實現的。

    首先在頁面的onload的事件中加入下面這行程式碼,其中'prewechat'就是你子網格的唯一名稱,這行程式碼是呼叫的子網格提供的api,為子網格的onload的事件繫結一個function,補充下subgrid的這個addonload是在CRM 2015 Update 1後才引入的。

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時的預篩選,目前還是無法做到。

相關文章