zoukankan      html  css  js  c++  java
  • MS CRM 2011 用Jscript打开新窗口的几种方法

    原创地址:http://www.cnblogs.com/jfzhu/archive/2012/10/12/2720724.html

    转载请注明出处

    在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所支持,所以还是建议大家使用前两种方法。

  • 相关阅读:
    秒杀项目之——通过令牌发放机制,控制秒杀大闸以及队列泄洪
    Guava的使用
    秒杀项目之细节随笔记录————
    redis搭建集群
    redis内存满了怎么办?
    多个电脑上免密登陆命令、scp远程拷贝、修改文件的用户和组
    克隆完虚拟机后修改网卡,修改静态IP
    redis基本操作和 过期时间设置以及持久化方案
    linux操作系统安装运行Redis
    云服务器以及linux操作系统打开防火墙,在墙上开一个小口
  • 原文地址:https://www.cnblogs.com/jfzhu/p/2720724.html
Copyright © 2011-2022 走看看