Crm 2011:刷新关联的网格视图

时间:2013-05-17 15:33:02

标签: c# javascript silverlight dynamics-crm-2011 dynamics-crm

有没有办法刷新相关的网格视图? 我在账户表格上有一个销售订单视图,在此表格上我有一个按钮(新订单),打开一个新的销售订单表格,在这个表格中我做我的订单, 问题是:当我保存在我的订单上时,我想刷新我的订单关联视图(在帐户表单中),但我不知道如何获取控件名称或如何访问它。 我尝试了许多方式,如

  Xrm.Page.ui.controls.get("Orders").refresh();
  document.getElementById("areaOrders").contentWindow.location.reload(true);

感谢的。

3 个答案:

答案 0 :(得分:3)

要刷新子网格,您可以使用

Xrm.Page.getControl('new_subgrid').refresh();

然而根据我的经验,这是非常错误的(无论如何都是RU12),所以请谨慎使用。您还需要检查您检索的控件的类型,并确保它是一个网格,否则将抛出错误。

但是你提出了一个稍微不同的问题:

  

当我保存订单时,我想刷新订单关联视图(在账户表格中)

我理解这意味着您已从“帐户”表单中打开订单表单,并希望刷新“帐户”表单上的子网格。

简单的答案是否定的,你不能以支持的方式做到这一点。

这可能是可能的,但它不会很漂亮。您需要获得对开始窗口的引用,该窗口可以在

中找到
window.opener

我没有尝试过,也没有尝试使用机器。但我建议反对它,另一种方法是单击手动刷新子网格;这不是一个糟糕的选择。

答案 1 :(得分:1)

这是我写的一个javascript函数,如果表单包含超过4个子网格,则强制进行子网格加载。我相信最近的汇总已经使代码的目的过时了,但是找到你的子网格可能会有所帮助:

/*
By default, CRM only loads the first 4 subgrids on a form.  This will load
up all subgrids on the form, or only the number (over the default 4) if specified
*/
forceSubgridLoad: function (countOver4) {
    $(document).ready(function () {

        var links = $("a.ms-crm-List-LoadOnDemand");
        for (i = 0; i < links.length && (countOver4 == null || i < countOver4); i++) {
            links[i].click();
        }
    });
},

答案 2 :(得分:1)

我发表了关于auto-refreshing a sub-grid in Microsoft Dynamics CRM的博文 解决方案是一个不受支持的定制,基本归结为:

document.getElementById("crmGrid").control.refresh();

更换&#34; crmGrid&#34;使用要刷新的子网格的div id。

据我所知,没有受支持的方式进行刷新。