繁体   English   中英

无法从打开的框架网络资源Dynamics CRM 2011中访问window.parent的Xrm.data.entity对象

[英]Unable to access window.parent's Xrm.data.entity object from a opened frame web resource Dynamics CRM 2011

我有一个HTML网络资源

<script src="ClientGlobalContext.js.aspx" type="text/javascript"></script> 

在头上。 当用户单击功能区中的拒绝时,会弹出一个框架。 当我尝试单击框架(而不是功能区)中的拒绝按钮时,它引发错误“错误:无法获取未定义或空引用的属性'实体'”,我知道

window.parent.Xrm.Page.context.getServerUrl()

正在运行,因为从我们的服务器填充了查找框架。 我尝试了以下方法:

window.parent.Xrm.Page.data.entity.attributes.get("approvalstatus").getValue()

window.parent.Xrm.Page.getAttribute("approvalstatus").getValue();

两者都给我错误。 我完全迷失了为什么我无法访问父窗口的Xrm.Page对象。 请指教。

我不确定100%,但是我可以看到一些问题。

1.我认为您没有正确使用ClientGlobalContext.js.aspx

我认为您不应该使用window.parent

我认为您应该使用 GetGlobalContext返回Xrm.Page.context

例如; GetGlobalContext.getServerUrl()

2. 不赞成使用 getServerUrl()

使用getClientUrl()代替。

3.我不相信GetGlobalContext让您访问Xrm.Page.data.entity

GetGlobalContext仅提供Xrm.Page.context

Xrm.Page.data.entity是一个不同的对象。

4.我认为您应该将表单数据传递到Web资源中

这涉及您在CRM表单上编写JavaScript,该表单将值传递到HTML Web资源

(与尝试从Web资源中读取CRM表单客户端相反。您也可以考虑从Web资源向CRM进行Web服务调用)。

在包含要传递给另一个网站的数据的属性上使用getValue方法,并组成另一个页面将能够使用的查询字符串参数的字符串。 然后,使用Field OnChange事件,IFRAME OnReadyStateComplete事件或Tab TabStateChange事件和setSrc方法将参数附加到IFRAME或Web资源的src属性中。

解决方案是使用XrmServiceToolkit。 我试图从使用showModalDialog打开的子页面更新父页面的Xrm.data.entity ,但这似乎是不可能的。

XrmServiceToolkit允许您创建允许您执行所有CRM操作的SOAP请求。 使用此链接中说明的格式:

关键字很重要。

形式为IFRAME的HTML页面可以访问parent.Xrm.Page.data.entity

从功能区按钮打开框架(弹出对话框还是非对话框?),具体取决于。

如果要打开模式对话框,则将无法访问父Xrm上下文-您将需要传递值,然后在关闭对话框时根据结果进行更新。 如果要打开非模式对话框,则可以使用window.opener

参考:Scott在社区主题中提到

否则,请使用soap / odata / webapi在弹出窗口中再次发送记录ID和检索。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM