MS CRM 2011 用Jscript打开新窗口的几种方法

 

在CRM中,我们经常遇到这样的情况,点击一个按钮,需要弹出一个新的窗口。比如在客户中添加新联系人:

image

在MS CRM2011中,有以下几种方法可以打开一个新的窗口:

(1) Xrm.Utility.openEntityForm

(2) window.open

(3) openObj

前两种是在SDK中支持的,尤其推荐使用第一种,但要注意Xrm.Utility这个对象只在Rollup 8以后的版本才支持。这里顺便列出来CRM 2011各个Rollup的版本号:

Build Version 
RTM: 5.0.9688.583 (English)

Rollup 1 - 5.0.9688.1045 
Rollup 2 - 5.0.9688.1155 -> CRM2011-Server-v2 - 5.0.9688.1157 
Rollup 3 - 5.0.9688.1244 
Rollup 4 - 5.0.9688.1450 
Rollup 5 - 5.0.9688.1533 
Rollup 6 - 5.0.9690.1992 -> has been re-released (original release version: 5.0.9689.1985) 
Rollup 7 - 5.0.9690.2165 
Rollup 8 - 5.0.9690.2243 
Rollup 10 - 5.0.9690.2740 -> has been re-released (original release version: 5.0.9690.2730)

Note 
Update Rollup 9 was not released because of a delay in the Q2 Service Update. 
Update Rollup 10 fixes all the issues that would have been included in Update Rollup 9

 

下面来分别看一下这几个方法的使用:

(1) Xrm.Utility.openEntityForm

我们利用该方法来自己实现一个在客户中添加联系人的按钮。该方法具体参见SDK – “Set Field Values Using Parameters Passed to a Form”。

复制代码
var parameters = {};

// Two Options 字段 
parameters["donotemail"] = 1;


// Text 字段 
parameters["firstname"] = "Aaron"; 
parameters["lastname"] = "Babbitt";

// currency字段 
parameters["creditlimit"] = 10000;

// Option Set 字段 
parameters["gendercode"] = 1;

// Date 字段 
parameters["birthdate"] = "1/31/1990";

// simple lookup 
parameters["preferredserviceid"] = "2CBBB5B6-DA13-E211-905F-00155DA83B32"; 
parameters["preferredserviceidname"] = "Accountbezoek";

// customer lookup 
parameters["parentcustomerid"] = Xrm.Page.data.entity.getId(); 
parameters["parentcustomeridname"] = Xrm.Page.getAttribute("name").getValue(); 
parameters["parentcustomeridtype"] = "account";

// owner lookup 
parameters["ownerid"] = "D1655DCE-F90E-E211-905F-00155DA83B32"; 
parameters["owneridname"] = "Daisy Cabell"; 
parameters["owneridtype"] = "systemuser"; 
Xrm.Utility.openEntityForm("contact", null, parameters); 
复制代码

注意partylist lookup和regarding lookup都不可以添加到openEntityForm 的参数中,因为partylist lookup和regarding lookup都是multiple lookup。

 

(2) window.open:

window.open方法虽然用起来不是很美观,但是可以控制feather(控制新窗口是怎样打开的),具体可以参见下面的例子。另外要注意参数要进行编码,这里用的是encodeURIComponent方法。在之前的文章中,我还介绍过使用CrmEncodeDecode.CrmNameValueEncode方法来进行编码。这两个方法都可以使用。解码的方法就分别为decodeURIComponent和CrmEncodeDecode.CrmNameValueDecode。

复制代码
// Two Options 字段 
var extraqs = "donotemail=1";

// Text 字段 
extraqs += "&firstname=Aaron"; 
extraqs += "&lastname=Babbitt";

// currency字段 
extraqs += "&creditlimit=10000";

// Option Set 字段 
extraqs += "&gendercode=1";        

// Date 字段 
extraqs += "&birthdate=1/31/1990";

// simple lookup 
extraqs += "&preferredserviceid={2CBBB5B6-DA13-E211-905F-00155DA83B32}"; 
extraqs += "&preferredserviceidname=Accountbezoek";

// customer lookup 
extraqs += "&parentcustomerid=" + Xrm.Page.data.entity.getId(); 
extraqs += "&parentcustomeridname=" + Xrm.Page.getAttribute("name").getValue(); 
extraqs += "&parentcustomeridtype=account";

// owner lookup 
extraqs += "&ownerid={D1655DCE-F90E-E211-905F-00155DA83B32}"; 
extraqs += "&owneridname=Daisy Cabell"; 
extraqs += "&owneridtype=systemuser";

// Open the window. 
var features = "location=no,menubar=no,status=no,toolbar=no"; 
window.open("/main.aspx?etn=contact&pagetype=entityrecord&extraqs=" + 
    encodeURIComponent(extraqs), "_blank", features, false);
复制代码

(3) openObj:

这个方法在我之前的文章中也介绍过(是使用F12 Developer Tools工具来剖析出来的方法 微笑)。由于这个方法并不被SDk所支持,所以还是建议大家使用前两种方法。












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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值