在子ASP.net页面关闭后刷新父CRM页面

时间:2016-07-19 14:49:55

标签: javascript asp.net crm microsoft-dynamics dynamics-crm-2016

这是针对CRM 2016的内部部署。

我在CRM 2016的命令栏中有一个自定义按钮,它使用javaScript Web资源调用位于另一台服务器上的外部asp.net页面。此外部页面允许用户执行一些自定义操作,然后显示在父页面的其中一个子网格上。

以下是CRM按钮用于打开外部网页的JavaScript。

+-------+------+---------------------+
| nid   | mid  | pdate               |
+-------+------+---------------------+
| 12789 |   11 | 2016-09-26 00:00:00 |
| 12826 |    2 | 2016-07-13 00:00:00 |
| 12845 |    2 | 2016-07-05 00:00:00 |
| 12823 |   10 | 2016-06-21 00:00:00 |
| 12822 |    2 | 2016-06-17 00:00:00 |
| 12821 |   10 | 2016-06-07 00:00:00 |
| 12635 |   10 | 2016-06-07 00:00:00 |
| 12821 |    2 | 2016-06-07 00:00:00 |
| 12633 |   10 | 2016-05-25 02:19:29 |
| 12548 |   10 | 2016-05-20 00:00:00 |
+-------+------+---------------------+

我需要能够刷新父CRM页面以显示asp.net页面所做的更改。我宁愿只刷新父页面上的子网格,但如果必须的话,只需重新加载整个页面即可。

我尝试在子页面上使用javascript函数在窗口卸载事件上调用window.opener.location.reload(),但它不在父CRM页面上工作。我也尝试过window.opener.parent.refreshParent()。我认为问题是window.opener不包含值,因为CRM页面没有打开外部页面,它是由javascript函数打开的。

有没有办法通过javascript传递这个值,这样我在window.opener中有一个值可以使用?

有没有办法识别父页面上的子网格并向其发布刷新命令?

也许有一个更好的解决方案,我错过了?我愿意接受任何有关如何使其发挥作用的建议。

1 个答案:

答案 0 :(得分:0)

我不知道window.postMessage是否适用于Windows,但您可以进行调查。

另一种选择是,不是在新窗口中加载子页面,而是将其加载到iframe叠加层中。那么你肯定能够使用postMessage,UX会更好。