1

我们正在使用 2.0 美元的 Dynamics CRM 2016,并且在系统中的弹出窗口返回结果时遇到问题。

有几个地方我们在新窗口中打开网络资源(作为浮动面板),在新窗口中做一些工作然后需要与父窗口交互来设置一些字段。

这在使用 window.open 和 window.parent.Xrm... 设置值的浏览器中完美运行。但是在 USD 中,window.parent 变量为空,我们找不到任何其他方法来让父窗口设置值。

任何帮助或示例将不胜感激。

4

1 回答 1

2

这可能是一个两部分的挑战。第一个挑战涉及确保您的 Web 资源实际上是在 USD 内、在 Hosted Controls 中而不是在外部浏览器窗口中加载的。第二个挑战涉及在所涉及的托管控件之间进行通信,一旦一切都在美元内发生。

在美元中,如果 window.open 正在启动外部浏览器窗口,那么您的窗口导航规则(或缺少)允许您的 Web 资源导航离开美元。要在此处根据需要传递值,有必要使用窗口导航规则来控制此类导航。定义一个位于 FloatingPanel 上的托管控件,并试验规则,直到您的 Web 资源按需要加载。

如果 Web 资源在托管控件中加载,那么它只需要说美元。当需要返回值时,检查 window.IsUSD,并引发自定义事件:

https://msdn.microsoft.com/en-us/library/dn864970.aspx#EventMoniker

这将允许您编写可以使用事件的键值对的操作调用,这些键值对可在事件期间使用 [[替换语法]] 访问。这些操作调用可以在您的“父”控件上运行XrmCommand(USD 只是将其视为其他一些非父托管浏览器),因此您的返回值最终可以找到它们的方式。

于 2016-04-23T13:57:01.647 回答