有没有办法刷新相关的网格视图? 我在账户表格上有一个销售订单视图,在此表格上我有一个按钮(新订单),打开一个新的销售订单表格,在这个表格中我做我的订单, 问题是:当我保存在我的订单上时,我想刷新我的订单关联视图(在帐户表单中),但我不知道如何获取控件名称或如何访问它。 我尝试了许多方式,如
Xrm.Page.ui.controls.get("Orders").refresh();
document.getElementById("areaOrders").contentWindow.location.reload(true);
感谢的。
答案 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。
据我所知,没有受支持的方式进行刷新。