• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

norman

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

CRM客户端编程

开发脚本
脚本可以执行多种操作,例如:
计算表单中的值。
使用 Web 服务检索外部数据源中的数据或更新外部数据源。
在 IFrame 中与相同域中的 HTML 页或 Web 应用程序交互。
使用 Microsoft Dynamics CRM Web 服务对 Microsoft Dynamics CRM 数据执行操作。
执行附加数据验证。

开发与 Microsoft Dynamics CRM 表单交互的脚本时,请务必仅使用 Microsoft Dynamics CRM 客户端编程指南中所述的支持的对象、属性和方法。使用支持的对象、属性和方法将帮助确保表单脚本自定义项可以升级到下一个版本的 Microsoft Dynamics CRM。

 

检查表单类型
添加到实体的主表单的脚本还应用于“快速创建”表单。当用户在“查找记录”对话框中输入新记录时,会使用“快速创建”表单。如果您的脚本引用的字段不在“快速创建”表单中,将向用户显示一个错误。解决该问题有三种方法:


在代码中使用 crmForm.FormType 属性来设置条件,以便仅使用您指定的表单模式执行代码。使用这种方法可以避免在“快速创建”表单中执行代码。
将相关字段的属性配置为使用“业务必需的”或“业务建议的”约束。这将导致字段显示在“快速创建”表单中。
编写脚本,令它们检查属性是否存在。如果未找到属性,代码将不会执行。例如:
    if (crmForm.all.telephone1 !=null)
    {
      \\ Do something.
    }

onSave 事件脚本示例

Code
var CRM_FORM_SAVE_MODE_SAVE = 1; 
 
var CRM_FORM_SAVE_MODE_SAVEANDCLOSE 
= 2; 
 
// 仅验证用户是否单击“Save”。 
 
switch (event.Mode) 
{ 
 
case CRM_FORM_SAVE_MODE_SAVE: 
 
  
// 如果用户提供名和姓,则用户还必须提供 
  
// 职务。 
  if (crmForm.all.jobtitle.DataValue == null && 
   crmForm.all.firstname.DataValue 
!= null && 
   crmForm.all.lastname.DataValue 
!= null) 
  { 
   
// 告诉用户必须提供的内容。 
   alert("请提供此人的职务。"); 
 
   
// 将焦点移到控件上。 
       crmForm.all.jobtitle.SetFocus(); 
 
   
// 取消保存。 
   event.returnValue = false; 
  } 
  
break; 
 
 
case CRM_FORM_SAVE_MODE_SAVEANDCLOSE: 
 
  
// 如果用户忘记提供职务,则提供默认职务。 
 
  
if (crmForm.all.jobtitle.DataValue == null) 
  { 
   
// 设置默认职务。 
   crmForm.all.jobtitle.DataValue = "N/A"; 
       
// 因为这是“保存并关闭”,因此仅保存表单。 
  }     
  
break; 
} 

onLoad 事件脚本示例


显示消息。
下面的脚本显示当打开表单以创建记录或更新记录时,如何使用 OnLoad 事件来为用户显示两个不同的消息。

Code
var CRM_FORM_TYPE_CREATE = 1; 
var CRM_FORM_TYPE_UPDATE 
= 2; 
 
switch (crmForm.FormType) 
{ 
  
case CRM_FORM_TYPE_CREATE: 
    alert(
"这是创建表单。"); 
    
break; 
 
  
case CRM_FORM_TYPE_UPDATE: 
    alert(
"这是更新表单,ID 是 " + crmForm.ObjectId); 
    
break; 
} 


最大化窗口。
下面的脚本显示如何调整窗口大小以便始终以最大化模式打开窗口。

window.resizeTo (screen.availwidth, screen.availHeight);
window.moveTo (0,0);

onChange 事件脚本示例


JScript 示例脚本显示如何使用 onChange 事件在输入电话号码时设置其格式。

此脚本尝试使用标准美国格式设置具有 7 位到 10 位数字的电话号码的格式。

Code
// 获取触发该事件的字段。 
var oField = event.srcElement; 
 
// 验证该字段存在并且不为空。 
if (typeof(oField) != "undefined" && oField != null) 
{ 
  
// 移除任何非数字字符。 
  var sTmp = oField.DataValue.replace(/[^0-9]/g, ""); 
 
  
// 如果号码具有所预期的长度并且受支持,将设置该号码的格式。 
  switch (sTmp.length) 
  { 
    
case "4105551212".length: 
      oField.DataValue 
= "(" + sTmp.substr(0, 3) + ") " + sTmp.substr(3, 3) + "-" + sTmp.substr(6, 4); 
      
break; 
 
  
case "5551212".length: 
      oField.DataValue 
= sTmp.substr(0, 3) + "-" + sTmp.substr(3, 4); 
      
break; 
  } 
} 
===================================================================

CRM 窗体定制技巧和代码
给大家共享一些经常用到的一些crmForm窗体定制技巧和代码:
1. 改变lable的样式(加粗,变色,大小)
/* change new_button field label style */
if (crmForm.all.new_button != null)
{
  var field = crmForm.all.new_button_c;
  field.style.fontWeight = 'bold'; // change font to bold
  field.style.fontSize = '12px'; // change font size
  field.style.color = '#ff0000';  //change font color
}
2. 把输入框替换成图片
/* replace new_button_d to a button */
if (crmForm.all.new_button != null)
{
  var field = crmForm.all.new_button_d;
  var html = "<table border='0' cellspacing='0' cellpadding='0'><tr><img width='32' height='32' style='cursor:hand' src='/_imgs/ico_32_134.gif' alt='Click button' onclick='Button_OnClick()' /></tr></table>";
  field.innerHTML = html;
}
Button_OnClick = function()
{
  alert("button clicked!");
}
3. 把输入框替换成文本(使用replaceNode技术)
/* replace new_button_d to a label */
if (crmForm.all.new_button != null)
{
  var html = document.createElement( "<TD id='new_button_d'>");
  html.innerText = "this is a lable";
  crmForm.all.new_button_d.replaceNode(buttonText);
}
4. 附加一个文本(无需新建attribute,直接用html绘出)
/* append text under new_button */
if(crmForm.all.new_button != null)
{
  var html= document.createElement( "<LABEL>");
  html.innerText = "this is a text field";
  crmForm.all.new_button.parentNode.appendChild(html);
}

posted on 2008-08-04 14:59  strgvi  阅读(404)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3