之前忙於出差,累得稀里嘩啦的,也沒有時間更新了。現在,可以繼續寫文章了。言歸正傳。
上一篇,介紹了Microsoft Dynamics CRM中,表單開發方面的基本概念和知識,本文將繼續表單腳本開發的介紹。
不同於以往的幾個版本,MS CRM 2011中,將表單中的內容分為兩大類,分別是界面UI管理器以及數據管理器,分別是:
UI管理器:用於操縱表單中的各個HTML元素;
數據管理器:用於操縱表單所展現的實體實例的數據。
不管是哪一種管理器,都需要和Xrm.Page對象打交道。Xrm.Page對象提供了與MS CRM 2011的表單進行交互的一系列的對象和函數。
注意:在MS CRM 3以及MS CRM 4版本中的crmForm對象已經被棄用了,如果需要從MS CRM 4升級到MS CRM 2011,那么在表單腳本中,需要將有關crmForm的腳本內容,更新為MS CRM 2011的Xrm.Page的腳本。國外的同行開發了一個javascript converter的工具,用於將MS CRM 4中的有關crmForm內容自動轉換為Xrm.Page的腳本。
Xrm.Page是一個命名空間對象,其下包含了三大類的對象層次體系,形成的層次結構樹如下圖所示:
由上圖可見,Xrm.Page命名空間中,包含有三大部分的內容,分別是:
Xrm.Page.context:Xrm.Page.context對象提供了對上下文信息的訪問,包括獲取特定的組織信息、特定的用戶信息以及通過查詢字符串QueryString傳遞給表單的參數;
Xrm.Page.data.entity:表單的數據管理器,該對象提供了對表單所代表的實體數據的訪問、管理與控制;
Xrm.Page.ui:表單的界面UI管理器,該對象提供了對表單中各類界面元素的管理與控制;
Xrm.Page.context提供了如下的一些函數:
| 名稱 |
描述 |
| getAuthenticationHeader | 已經棄用了,該函數用於在Javascript訪問MS CRM Webservice時,生成訪問所需的SOAP頭信息 |
| getCurrentTheme | 在Outlook客戶端使用中,獲取用戶選擇的主題(Theme) |
| getOrgLcid | 獲取當前組織的基礎語言代碼,例如簡體中文版,那么就是2052,如果是英文版,那么值就是1033 |
| getOrgUniqueName | 獲取當前組織的唯一名稱 |
| getQueryStringParameters | 獲取傳送給頁面的查詢字符串參數,以鍵值對的方式存放於一個數組中 |
| getServerUrl | 獲取服務器的URL地址,如果是在Outlook客戶端在離線環境下使用本函數,將返回本地的一個地址 |
| getUserId | 獲取當前用戶的主鍵值,一個GUID值 |
| getUserLcid | 獲取當前用戶選定的主語言的ID值 |
| getUserRoles | 獲取用戶的角色 |
| isOutlookClient | 判斷,當前的上下文環境,是否處於Outlook客戶端環境下 |
| isOutlookOnline | 判斷,當前的上下文環境,是否處於Outlook離線客戶端環境下; |
| prependOrgName | 為特定路徑預置組織名稱 |
對於表單環境下,直接使用Xrm.Page.context即可訪問上下文環境。如果是在表單外的環境中,例如HTML形式的web資源,那么就需要通過添加ClientGlobalContext.js.aspx文件的方式,完成對GetGlobalContext函數的引用,才可以訪問Xrm.Page.context對象,從而訪問上面列表中的方法以獲取上下文環境。ClientGlobalContext.js.aspx文件的位置是/Webresources文件夾下,所以,在web資源中添加對ClientGlobalContext.js.aspx文件的引用時,需要注意路徑問題。舉例來說,有一個HTML資源,其名稱為new_/myhtmlpage/html1.htm,那么如果需要在head元素下添加script子元素時,script子元素的src屬性的設置就需要注意啦,正確的書寫方式應該是
……
<head>
……
<script type=”text/javascript” src=”../../ClientGlobalContext.js.aspx” />
……
</head>
……
通過”../../”的方式,使用相對路徑,已經指定了文件夾到了”webresources”目錄下,同時,ClientGlobalContext.js.aspx文件就在WebResources目錄下,從而完成了在HTML web資源中對ClientGlobalContext.js.aspx文件的引用。

