Dynamics CRM 2011 编程系列(5):JS脚本编程之实战一
来源:互联网 发布:highlight.min.js下载 编辑:程序博客网 时间:2024/06/05 05:16
在前面的章节中,我们学习了脚本编程中的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事件
//选择的日期是否大于或等于当前日期。//是返回truefunction 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技术,让程序执行能灵活。
- Dynamics CRM 2011 编程系列(5):JS脚本编程之实战一
- Dynamics CRM 2011 编程系列(2):JS脚本编程之onload事件
- Dynamics CRM 2011 编程系列(3):JS脚本编程之onsave事件
- Dynamics CRM 2011 编程系列 (6):JS脚本编程之实体的CRUD[Create,Read]
- Dynamics CRM 2011 编程系列(2):JS脚本编程之onload事件
- Dynamics CRM 2011 编程系列(3):JS脚本编程之onsave事件
- Dynamics CRM 2011 编程系列(11):JS编程之征服表单控件(一)
- Dynamics CRM 2011 编程系列(4):JS脚本编程之onchange事件
- Dynamics CRM 2011 编程系列(12):JS编程之征服表单控件(二)
- Dynamics CRM 2011编程系列(60):JS编程之CRUD辅助类(JQuery版)
- Dynamics CRM 2011 编程系列(7):JS编程之实体的CRUD[Update,Delete]
- Dynamics CRM 2011 编程系列(10):JS编程之构造OData查询字符串
- Dynamics CRM 2011 编程系列(9):JS编程之客户端实体
- Dynamics CRM 2011 编程系列(13):JS编程之Who Am I
- Dynamics CRM 2011 编程系列(14):JS编程之表单控件的执行上下文
- Dynamics CRM 2011编程系列(49):FetchExpression(一)
- Dynamics CRM 2011编程系列
- Dynamics CRM 2011编程系列
- factory
- EasyUI_tree根据数据库数据非迭代生成树形结构
- C#中赋值表达式也有值,它的值表示为赋值后变量的值
- 单线程模型中Message、Handler、Message Queue、Looper之间的关系
- Shell中的grep、awk和sed的常用命令和语法
- Dynamics CRM 2011 编程系列(5):JS脚本编程之实战一
- 使用JQuery结合HIghcharts实现从后台获取JSON实时刷新图表
- 中国式危机公关9加1策略(第五章 慎用信息控制策略)
- erlang服务器编程思想和实现
- 未能解决:未能加载文件或程序集“XXXXXXXXX”或它的某一个依赖项。另一个程序正在使用此文件,进程无法访问。 (异常来自 HRESULT:0x8007002
- Spring配置项<context:annotation-config/>解释说明
- SQL Server 连接字符串中的参数介绍
- Android学习笔记(5)————SQLite的介绍与相关操作方法
- 并查集 畅通工程