我们正在使用带有2.0美元的Dynamics CRM 2016,并且在系统返回结果时遇到弹出窗口问题。
有几个地方我们在新窗口中打开webresources(作为浮动面板),在新窗口中做一些工作然后需要与父窗口交互来设置一些字段。
这在浏览器中使用window.open和window.parent.Xrm ...来完美地设置值。但是在USD中,window.parent变量为null,我们找不到任何其他方法来让父窗口设置值。
任何帮助或示例都将不胜感激。
答案 0 :(得分:1)
这可能是一个由两部分组成的挑战。第一个挑战涉及确保您的Web资源实际上是在美元内,在托管控件而不是外部浏览器窗口中加载。第二个挑战涉及所涉及的托管控制之间的通信,一旦所有事情都发生在美元内。
在USD中,如果window.open正在启动外部浏览器窗口,那么您的窗口导航规则(或缺少窗口导航规则)允许您的Web资源导航离开USD。要在此处根据需要传递值,必须使用窗口导航规则来控制此类导航。定义一个存在于FloatingPanel上的托管控件,并试验规则,直到您的Web资源按需加载。
如果Web资源正在托管控件中加载,那么它只需要说美元。当返回值时,检查window.IsUSD,并引发自定义事件:
https://msdn.microsoft.com/en-us/library/dn864970.aspx#EventMoniker
这将允许您编写可以使用Event的键值对的Action Calls,这些键值对在事件期间可以使用[[replacement syntax]]访问。这些Action Calls可以在你的“父”控件上运行RunXrmCommand(美元只是将其视为一些其他非父托管浏览器),因此你的返回值最终可以找到它们的路径。