MS CRM 2011 如何用JScript读取web resource资源

简介:

 

CRM从2011开始推出了一个Web Resource的概念。Web Resource有很多种类型,我们比较常用的是JScript web resource,比如可以用来定制Form的OnLoad事件处理。还有一种XML类型的web resource,我们可以用它来做为CRM的配置文件。这个配置文件有什么用,怎么用呢?请大家看下面的这个小例子。

 

假如你在CRM中自定义了一个Ribbon按钮,点击这个按钮,会弹出一个窗口打开你们公司的一个网站(比如一个SharePoint网站)。你们公司有两个CRM和SharePoint的环境,一个是开发/测试环境,一个是生产环境。测试环境的SharePoint URL为http://sharepointTest.mycompany.com,而生产环境的SharePoint URL为http://sharepointLive.mycompany.com。如果你将SharePoint的URL硬写(hardcode)进JScript的web resource里,那么每次如果你将solution从测试环境导入到生产环境的时候,你的live CRM都会打开错误的SharePoint,即测试环境的SharePoint。

image

这时,XML类型的web resource就派上了用场。你可以将SharePoint的URL写在一个单独的XML web resource里。自定义的Ribbon按钮要打开哪个URL,要去xml web resource里读取,而且xml web resource不要放在solution中,这样就把SharePoint的URL从你的solution中剥离了出来。每次你从测试环境的CRM将solution导入到生产环境CRM中,就不会再引发打开错误SharePoint的错误了。

image

接下来的问题就是在JScript的web resource中,如何读取另一个xml web resource的数据呢?加入我们有两个web resource,一个是new_testxml.xml,一个是new_test.js。new_testxml.xml的文件内容如下:

<urls> 
<url id="myurl">http://www.baidu.com</url> 
</urls>

在JScript中,你要先加载xml文件,我们可以使用XMLHttpRequest对象来加载。关于如何加载XML文档,大家也可以参见我以前的文章。xml web resource的路径为:

var xmlPath = "../WebResources/new_testxml.xml";

Web Resource的名字反映了路径结构。如果你的xml web resource叫new_xml/test.xml,那么它的路径就为:

var xmlPath = "../WebResources/new_xml/testxml.xml";

在 JScript中先读取xml web resource的内容,并查询id为myurl的节点,并返回该节点的URL。

复制代码
var xmlPath = "../WebResources/new_testxml.xml";

if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp = new XMLHttpRequest();
}
else {// code for IE6, IE5 
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET", xmlPath, false);
xmlhttp.send();
xmlDoc = xmlhttp.responseXML;

// 如果只是支持IE浏览器可以
// var url = xmlDoc.selectSingleNode("/urls/url[@id='myurl']").text; 
// 否则SDK中已经为我们封装了对其他浏览器的支持的方法,
// 请引用SDK\SampleCode\JS\SOAPForJScript\SOAPForJScript\Scripts\SDK.MetaData.js
var url = SDK.MetaData._selectSingleNodeText(xmlDoc, "/urls/url[@id='myurl']");
复制代码

最后不要忘了给用户设置读取web resource的权限:











本文转自JF Zhu博客园博客,原文链接:    http://www.cnblogs.com/jfzhu/archive/2012/10/21/2732845.html,如需转载请自行联系原作者


相关文章
|
6月前
|
前端开发 API 数据安全/隐私保护
Web前端开发中的跨域资源共享(CORS)解决方案
【2月更文挑战第5天】在Web前端开发中,跨域资源共享(CORS)是一个常见的挑战。本文将探讨CORS的概念和原理,并介绍一些常用的解决方案,包括服务器端配置和前端处理方法,帮助开发者更好地应对跨域请求问题。
271 4
|
6月前
An error happened during template parsing (template: “ServletContext resource [/WEB-INF/templates/in
An error happened during template parsing (template: “ServletContext resource [/WEB-INF/templates/in
|
6月前
Could not open ServletContext resource [/WEB-INF/springmvc-servlet.xml]【解决方案】
Could not open ServletContext resource [/WEB-INF/springmvc-servlet.xml]【解决方案】
|
6月前
|
存储 安全 前端开发
第五章 跨域资源共享(CORS):现代Web开发中的关键机制
第五章 跨域资源共享(CORS):现代Web开发中的关键机制
172 1
|
1月前
|
Java 应用服务中间件 Spring
【终极解决方案】Could not open ServletContext resource [/WEB-INF/dispatcher-servlet.xml]
【终极解决方案】Could not open ServletContext resource [/WEB-INF/dispatcher-servlet.xml]
26 0
|
3月前
|
安全 开发者 UED
|
3月前
【Azure 应用服务】Web.config中设置域名访问限制,IP地址限制访问特定的页面资源 (Rewrite)
【Azure 应用服务】Web.config中设置域名访问限制,IP地址限制访问特定的页面资源 (Rewrite)
|
5月前
|
机器学习/深度学习 运维 Serverless
函数计算产品使用问题之打开SD web UI域名时显示resource throttled,是什么原因
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
6月前
|
机器学习/深度学习 JSON 编译器
C++ 资源大全:标准库、Web框架、人工智能等 | 最全整理
C++ 资源列表,内容包括: 标准库、Web应用框架、人工智能、数据库、图片处理、机器学习、日志、代码分析等
125 1
|
6月前
|
前端开发 JavaScript Java
IDEA中修改了Web项目后,更新资源 类和资源 重新部署的区别
IDEA中修改了Web项目后,更新资源 类和资源 重新部署的区别
233 1