![](/img/trans.png)
[英]Cannot access Xrm.Page.data from within HTML web resource in CRM 2011
[英]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%,但是我可以看到一些问题。
ClientGlobalContext.js.aspx
我认为您不应该使用window.parent
。
我认为您应该使用 GetGlobalContext
返回Xrm.Page.context
。
例如; GetGlobalContext.getServerUrl()
getServerUrl()
使用getClientUrl()
代替。
GetGlobalContext
让您访问Xrm.Page.data.entity
GetGlobalContext
仅提供Xrm.Page.context
Xrm.Page.data.entity
是一个不同的对象。
这涉及您在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.