Dynamics CRM 2011 编程系列(5):JS脚本编程之实战一

在前面的章节中,我们学习了脚本编程中的onload,onsave,onchange事件。在这章节中,我们将学习一个小例子,让大家明白在日常的开发中应该怎么组合它们来完成开发获取。(下载本节的完整代码

在制作这个小例子前我们首先得搭建实验环境:

1.新建自定义实体“实战一”

2.修改站点地图,在地图上添加选项卡“实战”

完成上述步骤后,我们就可以开始进行后续操作了。“实战一”的具体需求如下:

1.只有属性“当前状态”的值为“草稿”时,才可以修改记录。

2.属性“最晚处理时间”的值必须大于或等于当前日期。

3.如果在属性“当前状态”的值为“草稿”时保存了记录,那么将属性“当前状态”的值修改为“已提交”

接下来我们就来看看能完成上面需求的解决方案吧:

1.在实体的onload事件中判断属性“当前状态”的值是否为“草稿”,如果不为草稿则禁用表单上的所有字段

2.在属性“最晚处理时间”的onchange事件里添加验证函数,判断当前选择的日期是否符合需求中的规则

3.在实体的onsave事件中判断属性“当前状态”的值是否为“草稿”,如果为草稿则将属性“当前状体”的值换为“已提交”并进行保存处理

现在我们就来具体实现这个解决方案吧,具体操作如下图所示:

图 5-1-1 新建一条测试数据

图 5-1-2 添加脚本资源文件,后续的javascript函数需要保持在这个文件中

图 5-2-1 获取属性“最晚处理时间”的名称

图 5-2-2 为属性“最晚处理时间”添加onchange事件

图 5-2-3 编写onchange事件触发的脚本函数

图 5-2-4 onchange事件执行后的效果

图 5-3-1 为实体添加“onload”事件

图 5-3-2

图 5-3-3 “onload”事件执行后的效果

图 5-4-1 为实体添加“onsave”事件

图 5-4-2

图 5-4-3 记录保存前

图 5-4-4 记录保存后

使用到的脚本:

属性“最晚处理时间”的onchange事件

//选择的日期是否大于或等于当前日期。 //是返回true function CheckDeadLine() { var new_deadline=Xrm.Page.getControl("new_deadline").getAttribute().getValue(); var tmpDate=new Date(); var today=new Date(tmpDate.getYear(),tmpDate.getMonth(),tmpDate.getDate()); if(new_deadline<today) { Xrm.Page.getControl("new_deadline").getAttribute().setValue(null); alert("最晚处理时间必须大于或等于当前日期"); } }


实体的“onload”事件

function Project_Form_Onload() { var new_statuscode=Xrm.Page.getControl("new_statuscode").getAttribute().getValue(); if(new_statuscode != "1")//不为草稿 { //迭代表达元素并将他们禁用 Xrm.Page.data.entity.attributes.forEach(function (item, index) { item.controls.get(0).setDisabled(true); }); } }


实体的“onsave”事件

function Project_Form_Onsave() { var new_statuscode=Xrm.Page.getControl("new_statuscode").getAttribute().getValue(); if(new_statuscode == "1") { var new_statuscode=Xrm.Page.getControl("new_statuscode").getAttribute().setValue("2");//设置为已提价 } }


小结:通过合理的组合使用“onchange”,“onload”,“onsave”事件可以完成大部的日常开发。并且你也可以在这些事件中使用Ajax技术,让程序执行能灵活。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值