MS CRM 2011的自定义与开发(12)——表单脚本扩展开发(2)

    之前忙于出差,累得稀里哗啦的,也没有时间更新了。现在,可以继续写文章了。言归正传。

    上一篇,介绍了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是一个命名空间对象,其下包含了三大类的对象层次体系,形成的层次结构树如下图所示:

image

    由上图可见,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文件的引用。

posted on 2012-03-15 17:09  石头居  阅读(3354)  评论(0编辑  收藏  举报