在 Dynamics CRM 2016 中快速创建后刷新父表单
Refresh Parent Form after Quick Create in Dynamics CRM 2016
在 Dynamics CRM 2016 中,我们有一个运行良好的快速创建表单。但是一旦完成快速创建并保存记录(并且新记录出现在父窗体的子网格中),子网格下的汇总字段不会在屏幕上重新刷新直到用户按下 F5。
(我们有一些 C# 代码来更新汇总)。
有谁知道如何在快速创建成功后强制刷新主窗体运行?
您可以在刷新事件上添加超时,并在 1-2 秒后再次刷新。
function OnFormLoad() //add this function onload form
{
var subGrid = window.parent.document.getElementById("id of your subgrid")
if (subGrid !== null) {
if (subGrid.control)
subGrid.control.add_onRefresh(fnOnRefresh)
else
setTimeout(OnFormLoad, 500);
} else {
setTimeout(OnFormLoad, 500);
}
}
function fnOnRefresh() {
setTimeout(function() {
Xrm.Page.ui.controls.get("id of your subgrid").refresh();
}, 2000) //after 2 sec refresh subgrid
}
我会尝试使用以下代码段停止 OOB 保存事件:Read more
function onSave(context) {
var saveEvent = context.getEventArgs();
saveEvent.preventDefault();
//save explicitly here
//reload the window here
}
然后使用代码保存实体:
Xrm.Page.data.entity.save();
然后 refresh/reload 浏览器 window。我没试过这个但是非常粗略的理论:)
我们成功了...使用了 Timur 的建议,但只是将最后一个函数更改为:
function fnOnRefresh() {
setTimeout(function() {
window.parent.location.reload(true);
}, 500)
}
谢谢
在 Dynamics CRM 2016 中,我们有一个运行良好的快速创建表单。但是一旦完成快速创建并保存记录(并且新记录出现在父窗体的子网格中),子网格下的汇总字段不会在屏幕上重新刷新直到用户按下 F5。
(我们有一些 C# 代码来更新汇总)。
有谁知道如何在快速创建成功后强制刷新主窗体运行?
您可以在刷新事件上添加超时,并在 1-2 秒后再次刷新。
function OnFormLoad() //add this function onload form
{
var subGrid = window.parent.document.getElementById("id of your subgrid")
if (subGrid !== null) {
if (subGrid.control)
subGrid.control.add_onRefresh(fnOnRefresh)
else
setTimeout(OnFormLoad, 500);
} else {
setTimeout(OnFormLoad, 500);
}
}
function fnOnRefresh() {
setTimeout(function() {
Xrm.Page.ui.controls.get("id of your subgrid").refresh();
}, 2000) //after 2 sec refresh subgrid
}
我会尝试使用以下代码段停止 OOB 保存事件:Read more
function onSave(context) {
var saveEvent = context.getEventArgs();
saveEvent.preventDefault();
//save explicitly here
//reload the window here
}
然后使用代码保存实体:
Xrm.Page.data.entity.save();
然后 refresh/reload 浏览器 window。我没试过这个但是非常粗略的理论:)
我们成功了...使用了 Timur 的建议,但只是将最后一个函数更改为:
function fnOnRefresh() {
setTimeout(function() {
window.parent.location.reload(true);
}, 500)
}
谢谢