MS CRM 2011 用Jscript打開(kāi)新窗口的幾種方法
來(lái)源:程序員人生 發(fā)布時(shí)間:2014-05-03 10:22:48 閱讀次數(shù):3154次
在CRM中,我們經(jīng)常遇到這樣的情況,點(diǎn)擊一個(gè)按鈕,需要彈出一個(gè)新的窗口。比如在客戶中添加新聯(lián)系人:
在MS CRM2011中,有以下幾種方法可以打開(kāi)一個(gè)新的窗口:
(1) Xrm.Utility.openEntityForm
(2) window.open
(3) openObj
前兩種是在SDK中支持的,尤其推薦使用第一種,但要注意Xrm.Utility這個(gè)對(duì)象只在Rollup 8以后的版本才支持。這里順便列出來(lái)CRM 2011各個(gè)Rollup的版本號(hào):
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
下面來(lái)分別看一下這幾個(gè)方法的使用:
(1) Xrm.Utility.openEntityForm
我們利用該方法來(lái)自己實(shí)現(xiàn)一個(gè)在客戶中添加聯(lián)系人的按鈕。該方法具體參見(jiàn)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 的參數(shù)中,因?yàn)閜artylist lookup和regarding lookup都是multiple lookup。
(2) window.open:
window.open方法雖然用起來(lái)不是很美觀,但是可以控制feather(控制新窗口是怎樣打開(kāi)的),具體可以參見(jiàn)下面的例子。另外要注意參數(shù)要進(jìn)行編碼,這里用的是encodeURIComponent方法。在之前的文章中,我還介紹過(guò)使用CrmEncodeDecode.CrmNameValueEncode方法來(lái)進(jìn)行編碼。這兩個(gè)方法都可以使用。解碼的方法就分別為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:
這個(gè)方法在我之前的文章中也介紹過(guò)(是使用F12 Developer Tools工具來(lái)剖析出來(lái)的方法
)。由于這個(gè)方法并不被SDk所支持,所以還是建議大家使用前兩種方法。
生活不易,碼農(nóng)辛苦
如果您覺(jué)得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)