crm 2011 js - 刷新时获取关联的网格视图

crm 2011 js - Get associated grid view on refresh

我在 CRM 2011 中有一个 Kit 报价产品,我正在尝试在相关产品视图更新时调用一个函数。

在 F12 调试工具中我可以看到网格 ID 是 'crmGrid_productassociation_association':

但是下面的js代码好像不行:

var grid = document.getElementById("crmGrid_productassociation_association").control;
if (grid != null)
{
    alert("success");
}   

当我 运行 页面加载此代码时:

console.dir(Xrm.Page.ui.controls.get());

crmGrid_productassociation_association 控件没有出现在控件列表中。相反,只会显示原始报价产品的控件。有谁知道如何在关联的网格视图刷新时调用 js 函数?

对于那些想知道的人,我能够使用 JS 在 CRM 2011 中获取关联的网格,您需要一个如下所示的函数:

function reloadKitProducts() {
    var iframe = document.getElementById('areaKitsFrame');

    if (iframe == null || iframe.readyState != "complete") {
        setTimeout(reloadKitProducts, 3000);
        return;
    }

    var subgrid = iframe.contentWindow.document.getElementById('crmGrid_productassociation_association').control.add_onRefresh(getKitProductsOnLineItemChange);
}

您需要获取包含子网格的iframe的id。这是这里的主线:

var subgrid = iframe.contentWindow.document.getElementById('crmGrid_productassociation_association').control.add_onRefresh(getKitProductsOnLineItemChange);

它只会在您单击导航窗格中的 link 时加载,并且仍然需要一两秒钟才能加载,因此您必须实现递归超时。