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

本文关键字:网格 视图 关联 刷新 2011 Crm | 更新日期: 2023-09-27 18:14:02

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

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

谢谢。

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

可以使用

来刷新子网格
Xrm.Page.getControl('new_subgrid').refresh();

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

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

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

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

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

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

中可用。
window.opener

我没有尝试过,也没有在机器前尝试过。但我会反对它,替代方案是一个单一的点击手动刷新子电网;这是个不错的选择。

这是我写的一个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();
        }
    });
},

我曾经写过一篇关于在Microsoft Dynamics CRM中自动刷新子网格的博文。
解决方案是一个不支持的定制,基本上可以归结为:

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

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

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