Dynamics 365 CRM JavaScript 相关

I.Xrm.Page.context:上下文信息管理器
Xrm.Page.context.getCurrentAppUrl(); 获取URL
Xrm.Page.context.getOrgUniqueName();获取组织名称。
Xrm.Page.context.getUserRoles():获取当前用户安全角色数组(每个对象中存储的是安全角色的Guid)

II.Xrm.Page.data.entity:实例数据管理器
Xrm.Page.data.entity.getId():返回当前实例的Guid值。
Xrm.Page.data.entity.getEntityName():返回当前实例所属实体的逻辑名称。
Xrm.Page.data.entity.getIsDirty():返回当前实例是否修改。
Xrm.Page.data.entity.getDataXml():
Xrm.Page.data.entity.addOnSave(function/functionName):添加保存记录时调用的函数。
取消OnSave事件:event.returnValue = false;
function OnSaveHandler(ExecutionObj){ // 注意:要勾选上表单编辑中的执行上下文
ExecutionObj.getEventArgs().preventDefault(); }

Xrm.Page.data.entity.removeOnSave(function/functionName):删除保存记录时调用的函数。
Xrm.Page.data.entity.save(无/“saveandclose”/“saveandnew”):保存/保存并关闭/保存并新建。

III.Xrm.Page.data.entity.attributes:属性集级别
Xrm.Page.data.entity.attributes.getLength():返回属性集中的属性数量。
Xrm.Page.data.entity.attributes.forEach( function( attribute, index ) ):遍历属性集,执行函数操作,参数为当前属性和索引值。
Xrm.Page.data.entity.attributes.get( String / Index / null / function(attribute, index) ):返回属性或属性集。
Xrm.Page.getAttribute( String / Index / null / function(attribute, index) ):快捷方式
⑴String:返回指定逻辑名称的属性(对象)。
⑵Index:返回指定索引值的属性(对象)。
⑶null:返回所有属性(数组)。
⑷function(attribute, index):返回函数return true的属性(数组)。

IV.Xrm.Page.getAttribute:属性级别
Xrm.Page.getAttribute(“LogicalName”).getAttributeType():返回属性的类型。
Xrm.Page.getAttribute(“LogicalName”).getFormat():返回属性格式的设置选项。
Xrm.Page.getAttribute(“LogicalName”).getName():返回属性的逻辑名称。
Xrm.Page.getAttribute(“LogicalName”).addOnChange(function/functionName):添加属性变更时调用的函数。
Xrm.Page.getAttribute(“LogicalName”).removeOnChange(function/functionName):删除属性变更时调用的函数。
Xrm.Page.getAttribute(“LogicalName”).setSubmitMode(“always”/“never”/“ditry”):设置在保存记录时,是否提交属性中的数据。
⑴always:始终
⑵never:从不
⑶ditry:脏页
Xrm.Page.getAttribute(“LogicalName”).setRequiredLevel(“none/required/recommended”):可选/必选/推荐。

属性取值方法:若字段内容为空,则返回值为null。
1.单行文本、多行文本:
Xrm.Page.getAttribute(“LogicalName”).getValue():String
2.整数、浮点数、十进制数、货币:
Xrm.Page.getAttribute(“LogicalName”).getValue():Number
3.两个选项:
Xrm.Page.getAttribute(“LogicalName”).getValue():Boolean
4.选项集:
Xrm.Page.getAttribute(“LogicalName”).getText():String
Xrm.Page.getAttribute(“LogicalName”).getValue():Number
Xrm.Page.getAttribute(“LogicalName”).getOption(“选项的值”):Option对象
⑴text:选项的标签
⑵value:选项的值
Xrm.Page.getAttribute(“LogicalName”).getOptions():Option对象数组
5.日期和时间:
Xrm.Page.getAttribute(“LogicalName”).getValue():Date对象
6.查找:
Xrm.Page.getAttribute(“LogicalName”).getValue():LookUp对象数组
⑴[0].id:对象的Guid
⑵[0].name:对象的主字段内容(LookUp中的显示名称)
⑶[0].entityType:对象所属实体的逻辑名称(LogicalName)

属性设值方法:若要设置字段为空,则设置为null。
1.单行文本、多行文本:
Xrm.Page.getAttribute(“LogicalName”).setValue(String);
2.整数、浮点数、十进制数、货币:
Xrm.Page.getAttribute(“LogicalName”).setValue(Number);
3.两个选项:
Xrm.Page.getAttribute(“LogicalName”).setValue(Boolean);
4.选项集:
Xrm.Page.getAttribute(“LogicalName”).setValue(Number);
5.日期和时间:
Xrm.Page.getAttribute(“LogicalName”).setValue(Date Object);
eg:Xrm.Page.getAttribute(“LogicalName”).setValue(new Date(1990,10,12)); // 显示 1990/11/12
6.查找:
Xrm.Page.getAttribute(“LogicalName”).setValue(LookUp Object 数组);
eg:
var lookup = new Array(1);
lookup[0] = new Object();
lookup[0].id = Xrm.Page.getAttribute(“new_chazhao”).getValue()[0].Id;
lookup[0].name = Xrm.Page.getAttribute(“new_chazhao”).getValue()[0].Name;
lookup[0].entityType = Xrm.Page.getAttribute(“new_chazhao”).getValue()[0].entityType;
Xrm.Page.getAttribute(“LogicalName”).setValue(lookup);
//js中得到该实体中lookup的属性 retrieveRecord(Xrm.Page.getAttribute(“new_coursename”).getValue()[0].id, “new_courseSet”, function (data, textStatus, XmlHttpRequest) {
var Item = new Object();
Item.id = data.new_courselevel.Id
Item.name = data.new_courselevel.Name;
Item.typename = data.new_courselevel.LogicalName;
var array = new Array();
array[0] = Item;
Xrm.Page.getAttribute(“new_courselevellook”).setValue(array);
}, null, false);

V.Xrm.Page.ui:窗体界面管理器
㈠Xrm.Page.ui:窗体级别
Xrm.Page.ui.getFormType():返回表单窗体的类型。
⑴ 0:未定义
⑵ 1:创建
⑶ 2:更新
⑷ 3:只读模式
⑸ 4:已禁用
⑹ 5:快速创建(已弃用)
⑺ 6:批量编辑
⑻11:读优化
Xrm.Page.ui.refreshRibbon():刷新功能区。
Xrm.Page.ui.close():关闭窗体。
Xrm.Page.ui.tabs.get(“general”).setLabel(“Major”); //js改变选项卡标签值

㈡Xrm.Page.ui.controls:控件级别(相似方法同上)
Xrm.Page.ui.controls.getLength();
Xrm.Page.ui.controls.forEach(function(control, index));
Xrm.Page.ui.controls.get(String/Index/null/function(attribute, index));
Xrm.Page.getControl(String/Index/null/function(attribute, index))(快捷方式)
属性.controls.get(0):可以获得对应控件。

控件方法:
Xrm.Page.getControl(“控件逻辑名称”).setVisible(true/false):可见/不可见控件。
Xrm.Page.getControl(“控件逻辑名称”).setDisabled(true/false):禁用/启用控件。
Xrm.Page.getControl(“LogicalName”).addCustomView(viewId, entityName, viewDisplayName, fetchXml, layoutXml, isDefault):添加查找对话框视图(查找字段的视图选择器必须开启)。
// 指定视图的GUID(任意)
var viewId = null;
// 查找实体的逻辑名称
var entityName = null;
// 指定视图的名称
var viewDisplayName = null;
// 视图的fetchXml查询
var fetchXml = null;
// 指定视图布局XML
var layoutXml = null;
// 是否设置为默认视图
var isDefault = true;
Xrm.Page.getControl(“LogicalName”).addCustomFilter(fetchXml):添加视图筛选条件,对所有视图有效,必须在addPreSearch中调用。
Xrm.Page.getControl(“LogicalName”).addPreSearch(function):在显示查询视图前,调用参数方法,常用于添加视图筛选条件。

Xrm.Page.getControl(“IFrameLogicalName”).setSrc(URL):设置资源地址。
每次展开选项卡,IFrame将刷新重置,因此,对src的修改,应放在TabStateChange事件中,而不是OnLoad事件。

㈢Xrm.Page.ui.tabs: 选项卡级别(相似方法同上)
Xrm.Page.ui.tabs.getLength();
Xrm.Page.ui.tabs.forEach(function(attribute, index));
Xrm.Page.ui.tabs.get(String/Index/null/function(attribute, index));
选项卡方法:见SDK。

㈣Xrm.Page.ui.tabs.get(…).sections:选项卡中节级别(相似方法同上)
Xrm.Page.ui.tabs.get(…).sections.getLength();
Xrm.Page.ui.tabs.get(…).sections.forEach(function(attribute, index));
Xrm.Page.ui.tabs.get(…).sections.get(String/Index/null/function(attribute, index));
节方法:见SDK。

㈤Xrm.Page.ui.navigation.items:关联导航视图(相似方法同上)
Xrm.Page.ui.navigation.items.getLength();
Xrm.Page.ui.navigation.items.forEach(function(item, index));
Xrm.Page.ui.navigation.items.get(String/Index/null/function(attribute, index));
 · String:在CRM2013中为"nav_关系名称"
节方法:见SDK。
VI.Xrm.Utility:
Xrm.Utility.openEntityForm(LocalName, Id, Parameters):
⑴打开新记录:Xrm.Utility.openEntityForm(“account”);
⑵打开新记录并设置默认值:Xrm.Utility.openEntityForm(“account”, null, parameters);
var parameters = {};
parameters[“文本/十进制数”] = String;
parameters[“数字/货币”] = Number;
parameters[“两个选项”] = true/false;
parameters[“选项集”] = Value;
parameters[“时间和日期”] = “1/31/1990”;
parameters[“查找”] = ID;
parameters[“查找name”] = Name;
parameters[“查找type”] = EntityType(仅限系统自带客户/负责人字段);
⑶打开已有记录:Xrm.Utility.openEntityForm(“account”, “A85C0252-DF8B-E111-997C-00155D8A8410”);
Xrm.Page.ui.getFormType() != 1 窗体不是创建状态
Xrm.Page.ui.setFormNotification(‘创建保存成功!’, “INFO”, “remind”); 通知

var object=new Object();
obj.new_type = { Value: "100000000" }; //picklist赋值
obj.new_contractno = { Id: "" +id + "", LogicalName: "" + Xrm.Page.data.entity.getEntityName() + "", Name: "1" };//lookup赋值

// 其他JS
Xrm.Page.context.getClient()
它是用来替代之前的 context.isOutlookClient() 接口的,返回值可能是 Browser、Outlook或者Mobile之一。

Xrm.Page.data.refresh(save).then(successCallback, errorCallback)
用来异步刷新界面,可以保存当前修改且不需要重新载入页面。我们知道Dynamics CRM 2011 记录详情界面保存后后悔重新载入页面,现在Dynamics CRM 2013提供了新选择。

Xrm.Page.data.save().then(successCallback, errorCallback)
异步的保存对记录的更改,并在保存成功后调用回掉函数successCallback。

Xrm.Page.getAttribute(arg).getIsPartyList()
返回查找字段是不是参与方列表,比如活动的必须方字段就是,我们新建的客制化实体目前是的查找字段是不能查找多个实体的,就不是参与方列表。

Xrm.Page.context.getUserName()
返回当前登录用户名

5.Xrm.Page.data.entity.getPrimaryAttributeValue()
这个用来获取实体的主属性的值,主属性默认情况下就是解决方案前缀加上_name,比如new_name,示例代码是 alert(Xrm.Page.data.entity.getPrimaryAttributeValue());,结果如下:

Xrm.Page.ui.setFormNotification()
窗体通知示例代码是 Xrm.Page.ui.setFormNotification('窗体通知消息一错误', 'ERROR', 'D1ADCA8C-D70D-4A2E-A759-BA08FE8A221B');
使用代码 Xrm.Page.ui.setFormNotification('窗体通知消息一警告', 'WARNING', 'D1ADCA8C-D70D-4A2E-A759-BA08FE8A221B'); 
使用代码 Xrm.Page.ui.setFormNotification('窗体通知消息一信息', 'INFO', 'D1ADCA8C-D70D-4A2E-A759-BA08FE8A221B'); 

Xrm.Page.ui.clearFormNotification(uniqueId)
清除参数指定的表单级别的消息。

Xrm.Page.getControl(arg).setNotification(message)
为指定的控件设置一个消息,能阻止窗体保存,是代替以前用alert方法弹出对话框提示错误信息的绝好替代方法。

Xrm.Page.getControl(arg).clearNotification()
清除为指定控件设置的消息。

Xrm.Utility.isActivityType(entityName)
传入实体的逻辑名称,判断boolean值告知是否是活动实体

Xrm.Utility.alertDialog(message,onCloseCallback)
显示一个消息,并在用户点击确定按钮后调用回调函数 onCloseCallback,请以后使用该函数代替window.alert。

Xrm.Utility.confirmDialog(message,yesCloseCallback,noCloseCallback)
显示一个确认对话框,当用户点击确定时调用函数yesCloseCallback,点击取消时调用函数noCloseCallback。

下面这个例子涵盖了前面几个函数:
function BtnOnClick() {
Xrm.Utility.confirmDialog(‘确定要继续操作吗?’, function () {
Xrm.Page.getControl(‘new_name’).setNotification(‘你点击了确定按钮!’);
Xrm.Page.ui.clearFormNotification(‘D1ADCA8C-D70D-4A2E-A759-BA08FE8A221B’);
}, function () {
Xrm.Utility.alertDialog(‘你点击了取消按钮’, function () { });
});
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值