1

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

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

谢谢。

4

3 回答 3

3

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

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

但是根据我的经验,它非常有问题(无论如何都是从 RU12 开始),所以请谨慎使用。您还需要检查您检索的控件的类型,并确保它是一个网格,否则将引发错误。

但是,您提出了一个略有不同的问题:

当我保存在我的订单上时,我想刷新我的订单相关视图(在帐户表单中)

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

简单的答案是否定的,您不能以受支持的方式执行此操作。

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

window.opener

我没有尝试过,也没有在机器前尝试过。但我建议不要这样做,另一种方法是单击手动刷新子网格;这不是一个糟糕的选择。

于 2013-05-21T11:20:13.953 回答
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();
        }
    });
},
于 2013-05-17T15:57:49.720 回答
1

我曾写过关于自动刷新 Microsoft Dynamics CRM 中的子网格的博客。
解决方案是不受支持的自定义,基本上可以归结为:

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

将“crmGrid”替换为要刷新的子网格的 div id。

据我所知,没有支持刷新的方法。

于 2013-05-18T09:17:57.793 回答