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()方法了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM