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

在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  ,如需转载请自行联系原作者

MS CRM 2011 用Jscript打开新窗口的几种方法相关推荐

  1. Response.Redirect 打开新窗口的两种方法

    一般情况下,Response.Redirect 方法是在服务器端进行转向,因此,除非使用 Response.Write("<script>window.location='htt ...

  2. (转)Response.Redirect 打开新窗口的两种方法

    一般情况下,Response.Redirect 方法是在服务器端进行转向,因此,除非使用 Response.Write("<script>window.location='htt ...

  3. [导入]Response.Redirect 打开新窗口的两种方法

    一般情况下,Response.Redirect 方法是在服务器端进行转向,因此,除非使用 Response.Write("<script>window.location='htt ...

  4. 打开新窗口的几种方式及target=_blank指定窗口名称

    打开新窗口的几种方式及target=_blank指定窗口名称   打开新窗口的几种方式: 1.form提交到新窗口  <form action="action.jsp" ta ...

  5. vue 路由跳转页面打开新页面_vue-router跳转时打开新页面的两种方法

    vue-router跳转时打开新页面的两种方法 最近还是在痛苦的挣扎中 挣扎吧 记录一下在vue项目中如何实现跳转到一个新页面(一个比较简单又比较基础的问题了),有两个方法: 1.标签实现新窗口打开 ...

  6. MS CRM 2011 RC中的新特性(9)—全新的工作流 脚本设计模式

    MS Dynamics CRM 2011中,在流程处理方面,除了以往版本中具有的工作流之外,又加入了新的内容--脚本Dialog.脚本Dialog,是同步的.需要用户输入内容的流程.当启动了脚本后,系 ...

  7. MS CRM 2011 RC中的新特性(2)——销售自动化方面

    在MS CRM2011 RC版本中,销售自动化方面新增的特性主要商机产品部分的对目录外产品的处理. 在以往的版本中,不能够在商机阶段将目录外产品作为商机产品的一个组成部分进行管理,只有到报价单阶段,才 ...

  8. Response.Redirect 打开新窗体的两种方法

    普通情况下,Response.Redirect 方法是在server端进行转向,因此,除非使用 Response.Write("<script>window.location=' ...

  9. 在Windows10中打开服务窗口的5种方法

    服务窗口如下: 方法1:运行窗口中输入services.msc 打开运行窗口 同时按win和r两个键 在窗口左下角的windows图标上点右键–>单击运行 在弹出窗口中输入services.ms ...

最新文章

  1. springmvc和mybatis整合关键配置
  2. html炫酷弹幕特效,jQuery文字弹幕特效
  3. 2.apache模块mod_rpaf ,让nginx代理后端的apache获取访客真是IP
  4. DataSet本地化数据的二表链接操作
  5. 变分自编码器(VAE)
  6. Golang中interface类型转string类型
  7. 深入了解JVM的底层原理
  8. 十大著名黑客—— 凯文-米特尼克
  9. 现金流量表模板2020_这位女会计编制现金流量表,一下子唰唰唰的整理好了
  10. Building wheel for opencv-python (PEP 517) 卡住
  11. 计算机知识与技能竞赛配图,“高教杯”全国大学生先进制图技术与技能大赛
  12. 计算机休眠开启密码设定,怎么把电脑设定待机密码
  13. 图片验证码有时会出现无法显示的问题
  14. 弱连通和强连通_什么叫:强连通 单向连通 弱连通 不连通
  15. 命令python所在的驱动器和文件夹_Python文件夹与文件的操作-阿里云开发者社区...
  16. Kubernetes Deployment
  17. 金华职称计算机考试中心,郑金华
  18. java从github下载项目_在github下载的java项目通过idea打开(全流程图文,傻瓜式)
  19. 一文读懂 TCP/IP 网络模型
  20. Java中的多态如何理解——详解

热门文章

  1. 网络传输大端序_基于大端法、小端法以及网络字节序的深入理解
  2. mysql如何算值_如何计算MySQL中具有特定值的列数?
  3. bond-vlan-bridge
  4. EnterpriseLibrary2.0系列文章及下载
  5. 第三方账号登陆的过程及由此引发的血案
  6. 用阿里云镜像解决Maven速度慢问题
  7. linux学习笔记 第七篇 (samba(一))(iscsi)
  8. 网站的PV、UV、的统计 (awk 统计命令)
  9. java中各进制之间的转换(十进制转十六进制、十进制转二进制、二进制转十进制、二进制转十六进制)...
  10. JBOSS的管理员账号和密码设定