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

    除了在上一篇文章中介绍的Xrm.Page.data.entity对象本身包含的方法之外,Xrm.Page.data.entity对象还包含一个当前实体记录所有属性的集合,名为Xrm.Page.data.entity.attributes,其中包含了表单中所有字段的信息。同时,对每个字段,根据其数据类型的不同,Microsoft Dynamics CRM也提供了相应的一组方法进行操纵、管理与控制。

方法

描述

适用的字段类型

addOnChange 输入参数为方法指针,添加字段OnChange事件的处理函数 所有
fireOnChange 触发相应字段的OnChange事件,以执行该字段的OnChange事件的处理函数 所有
getAttributeType 获取字段的数据类型,返回值为字符串,根据字段的数据类型不同,返回值可以是:"boolean"、"datetime"、"decimal"、"double"、"integer"、"lookup"、"memo"、"money"、
"optionset"、"string"
所有
getFormat 获取字段的格式化选项,返回值为字符串 所有
getInitialValue 获取在表单打开时,bool类型或者OptionSet类型字段的初始值,返回值是数字 bool、OptionSet
getIsDirty 获取一个bool值,以标明特定的字段在本次表单打开后,该字段值是否曾经被更改过 所有
getMax 获取特定类型字段(money、decimal、integer、double)的最大值,返回值为数字 money, decimal, integer, double
getMaxLength 获取string或者memo字段的最大长度,返回值为数字 string、memo
getMin 获取特定类型字段(money、decimal、integer、double)的最小值,返回值为数字 money, decimal, integer, double
getName 获取字段的逻辑名称,返回值为字符串 所有
getOption 输入参数为数字或者字符串,返回一个对应于输入参数的option对象 OptionSet
getOptions 返回OptionSet字段的所有下拉选项 OptionSet
getParent 返回给定字段的实体记录对象 所有
getPrecision 获取给定字段的精度值,所谓精度值指的是小数点右边的位数 money, decimal, integer, double
getRequiredLevel 获取字段的需求级别,返回值包括有:
none:无需求级别;
required:业务必需;
recommanded:建议填写
所有
getSelectedOption 获取OptionSet字段的当前选定的选项 OptionSet
getSubmitMode 获取字段的提交的模式,也就是说,在表单被保存时,特定字段的提交方式,返回值包括有:
always:总是被提交
never:从不被提交
dirty:只有在值发生变化的时候才提交
所有
getText 返回一个字符串,代表了当前OptionSet字段的选择项的文本信息 OptionSet
getUserPrivilege 返回一个对象,以确定当前用户对本记录的操作权限,该对象的属性包括有:
canRead:是否有读权限
canUpdate:是否有更新权限
canCreate:是否有创建权限
所有
getValue 获取字段的值,对于不同类型的字段,值的类型是不同的,包括有:
字段类型 字段值类型
bool 布尔型boolean
datetime 日期Date
decimal 数字Number
double 数字Number
integer 数字Number
money 数字Number
lookup 数组Array,数组中元素的类型是查找对象lookup object。每个查找对象包含如下的属性:
entityType:查找对象所代表的记录的实体逻辑架构名称
id:查找对象所代表记录的主键值
name:查找对象所代表的记录的主属性的值
memo 字符串String
optionset 数字Number,选项的的value属性的值
string 字符串String
所有
removeOnChange 和addOnChange对应,将某个处理函数从相应字段的OnChange事件处理函数列表中移除 所有
setRequiredLevel 设置字段的需求级别,接受的输入参数包括有:
none:无需求级别;
required:业务必需;
recommanded:建议填写
所有
setSubmitMode 设置提交模式,接受的输入参数包括有:
always:总是被提交
never:从不被提交
dirty:只有在值发生变化的时候才提交
所有
setValue 设置字段的值,不同类型的字段接收的值的类型也是不同的,具体的可以参见getValue部分的字段类型与字段值类型的对比介绍 所有

    从Xrm.Page.data.entity.attributes集合中,获取属性的途径有以下几种:

第一,通过Xrm.Page.data.entity.attributes对象的get方法,获取所有的当前表单中的属性集合,例如:

var attributeList = Xrm.Page.data.entity.attributes.get(); 

另外,可以将方法指针作为参数传递给get()方法,从而可以根据条件对返回的属性进行筛选,例如下面的代码就是获取表单中所有lookup类型属性的样例代码:

 

    var lookupAttrList = Xrm.Page.data.entity.attributes.get(isLookup);

function isLookup(attribute, index)

{

attribute.getAttributeType == “lookup”;

}

第二,通过为Xrm.Page.data.entity.attributes.get()方法传入参数,获取参数指定的某个属性,输入参数是某个属性的逻辑名称,例如:

    var firstNameAttr = Xrm.Page.data.entity.attributes.get(“firstname”);

    就是在客户表单中,获取“名”这个属性。

第三,通过简写方式获取某个属性,即通过Xrm.Page.getAttribute()方法,并传入需要获取的属性的逻辑名称,得到某个属性,例如上面第二种途径的简化的写法:

    var firstNameAttr = Xrm.Page.getAttribute(“firstName”);

 

    关于操作属性的方法,有几个是需要注意的:

首先,操作Lookup类型的属性,由于该类字段的值是一个lookup对象的数组,所以在操作该字段的时候,需要小心。下面是获取lookup类型字段的方法:

 1 var createdByAttr = Xrm.Page.getAttribute(“createdby”);
2 if (createdByAttr != null)
3 {
4 createdByAttr = createdByAttr.getValue();
5 if (createdByAttr != null)
6 {
7 createdByAttr = createdByAttr[0];
8 //lookup对应的关联的主要实体记录的逻辑名称
9 var createdBy_entityType = createdByAttr.entityType;
10 //一个GUID值,形如xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
11 var createdBy_id = createByAttr.id;
12 //lookup字段对应的关联的主要实体记录的主要名称
13 var createdBy_name = createdByAttr.name;
14 }
15 }

为lookup字段赋值,就是一个反方向的操作:拼装一个lookup对象,将其作为数组的第一个元素,通过setValue()方法将数组赋值给一个lookup字段;

其次,Optionset类型的字段,简单而言,类似于HTML中的select元素。故此,该类型字段,包含有多个下拉选项option,每个选项有一个显示文本text,一个值value。

第三,对于datetime类型的字段,赋值的时候,需要使用Date类型的对象。

第四,表单中被禁用的字段,默认情况下,在保存的时刻,是不会被提交给服务器的,可以使用setSubmitMode()方法,并设置输入参数为“dirty”,可以将被禁用字段修改后的值提交给服务器。那么如何修改被禁用字段的值呢,当然是使用setValue()方法了。

posted on 2012-03-20 16:04  石头居  阅读(3952)  评论(4编辑  收藏  举报