上面的文章中,介绍了如何编写插件以扩展业务逻辑,插件是运行于应用服务器上的由C#或者VB.NET编写的Assembly。除了插件之外,还可以借助Microsoft Dynamics CRM 2011平台提供的web资源以及表单编辑器,设定表单页面中的业务逻辑,也就是表单脚本扩展,以下的几篇文章都将是围绕着这一主题进行展开。
表单脚本扩展应用的主要目的是即时响应用户在浏览器中做出的操作,提供良好的客户体验。主要的应用包括以下几类:
客户端输入数据的验证、格式的调整;响应用户动作,操纵控制界面HTML的外观、行为、数据等;
响应用户动作,从后端平台或者其他的系统,使用Ajax获取数据;
表单脚本扩展开发主要使用的技术就是Javascript脚本的开发,通过开发脚本函数,作为MS CRM表单级别的几个扩展点,即表单事件,的事件处理函数,以完成表单级别的扩展。
MS CRM表单主要包含有5个事件,分别是:
- OnLoad事件:加载窗体后,会触发 OnLoad 事件。无法在OnLoad事件中阻止加载窗口。使用 OnLoad 事件可以准备要在窗体中使用的数据。可以使用 OnLoad 事件执行的操作包括:
根据变化的值执行计算。
提醒用户。
禁用不应更新的字段。 -
OnSave事件:当用户按下“保存”或“保存并关闭”按钮,或者触发会导致保存窗体的其他操作(如,使用 Save 方法)后,会触发该事件。该事件始终会发生,即使窗体中的数据没有变化。可以取消 OnSave 事件以阻止保存数据。正是由于这个原因,经常使用 OnSave 事件验证数据。需要注意,OnSave 事件并不对应于标准 HTML OnSubmit 事件。
-
OnChange事件:可在所有字段中使用 OnChange 事件。OnChange 事件要求具备两个条件:
字段中的数据必须发生了更改。
字段必须失去焦点。
该事件发生后,将重新验证字段中的数据。这意味着无法使用该事件输入有效数据。
可以使用 OnChange 事件执行的操作包括:
根据变化的值执行计算以更改其他字段。
更改字段的格式,例如,电话号码。
实现动态选择列表(下拉列表)。
-
TabStateChange事件:当选项卡展开或折叠时会发生此事件。您可能要推迟代码的执行直至选项卡展开。 此事件在使用脚本修改 IFRAME 控件的 src 属性时非常重要。IFRAME 将在选项卡展开时刷新。将删除对 src 属性的任何更改。如果与 IFRAME 的 src 属性交互,则应该始终在 TabStateChange 事件中包含此代码,而不是 Onload 事件中。
-
OnReadyStateComplete事件:除非 IFRAME 的内容已完全加载,否则与 IFRAME 内容交互的任何脚本都会失败。一旦 IFRAME 内容完成加载,此事件便会提供可包含要执行脚本的位置。