MS CRM 2011 剖析Ribbon与背后的Jscript

简介:

上一篇文章里,我给大家介绍了如何向ribbon按钮传递参数,在这篇文章中,我和大家在一起深度剖析一下ribbon的定义文件以及后边的Jscript。

 

我们还以Connect按钮为例,看看Connect To Another和Connect To Me是怎样工作的。

在sdk\resources\exportedribbonxml文件夹中找到accountribbon.xml这个文件打开。我们先来找Connect To Another这个子选项的定义:

复制代码
<Button Id="Mscrm.Form.account.AddConnectionNew" ToolTipTitle="$Resources:Ribbon.Connection.AddConnectionNew.Label" ToolTipDescription="$Resources:Ribbon.Connection.AddConnectionNew.Tooltip" Command="Mscrm.AddConnectionForm" Sequence="40" LabelText="$Resources:Ribbon.Connection.AddConnectionNew.Label" Alt="$Resources:Ribbon.Connection.AddConnectionNew.Label" />
复制代码

Command定义如下:

复制代码
<CommandDefinition Id="Mscrm.AddConnectionForm"> 
  <EnableRules> 
    <EnableRule Id="Mscrm.FormStateExistingOrReadOnlyOrDisabled" /> 
  </EnableRules> 
  <DisplayRules> 
    <DisplayRule Id="Mscrm.CreateConnection" /> 
    <DisplayRule Id="Mscrm.IsConnectionsEnabledPrimary" /> 
  </DisplayRules> 
  <Actions> 
    <JavaScriptFunction FunctionName="Mscrm.RibbonActions.addConnectionFromForm" Library="/_static/_common/scripts/RibbonActions.js"> 
      <CrmParameter Value="FirstPrimaryItemId" /> 
      <CrmParameter Value="PrimaryEntityTypeCode" /> 
      <CrmParameter Value="PrimaryControl" /> 
      <BoolParameter Value="false" /> 
    </JavaScriptFunction> 
  </Actions> 
</CommandDefinition> 
复制代码

这个Command调用的是_static/_common/scripts/RibbonActions.js文件中Mscrm.RibbonActions.addConnectionFromForm这个函数,有几个参数比如FirstPrimaryItemId,PrimaryEntityTypeCode看起来也应该很眼熟,我们在上一篇文章中刚刚讲到。接下来要做的就是打开RibbonActions.js这个文件来看一下。有两种方法:(1)可以在CRM服务器上找到这个文件;(2)如果你用的是CRM Online,你就没有办法登陆到服务器了,介绍大家使用一个IE自带的工具F12 Developer Tools。

 

打开account的表单,然后按F12,就启动了Developer Tools。

image

选择Script标签,然后在红色的标记里选择JS文件。因为这个文件是一个紧缩版的,难以阅读,所以将文件内容复制粘贴到Visual Studio中来进行搜索。

image

我把Mscrm.RibbonActions.addConnectionFromForm这个函数复制出来,放在这里:

复制代码
Mscrm.RibbonActions.addConnectionFromForm = function (objectId, objectTypeCode, primaryControl, connectToMe) { 
    var $v_0 = String.format("pId={0}&pType={1}", CrmEncodeDecode.CrmNameValueEncode(objectId), CrmEncodeDecode.CrmNameValueEncode(objectTypeCode.toString())); 
    if (connectToMe) 
        $v_0 = String.format("{0}&connectToMe=true", $v_0); 
    openObj(Mscrm.EntityTypeCode.Connection, "", $v_0, null, Mscrm.NavigationMode.NavigationModeNewWindow, null) 
}; 
复制代码

就是这一小段代码完成了Connect按钮的功能。神秘的面纱被一点点揭开了。从这段代码中可以看到CRM系统中有一些自定义的JS函数,我们来一一看一下:

(1) String.format: 如果你懂 C#的话,这个函数就不需要我介绍了,它就是用来格式化字符串的函数。因为在JS并不支持这个函数,所以有很多人都写过自己的JS版的String.format函数。现在CRM为我们写好了,为我们省了很多力气,感谢微软。举一个小例子,来看怎么用。

alert(String.format("Hello Mr.{0}", "Zhu")); 
// Hello Mr.Zhu

(2) CrmEncodeDecode.CrmNameValueEncode:如果你要将一个字符串作为参数放在一个URL里,这个字符串是不能包含一些特殊字符的,比如空格,感叹号,所以字符串要进行编码。下面举一个小例子,可以看到空格的编码为20%,!的编码为21%。

alert(CrmEncodeDecode.CrmNameValueEncode("Good Morning!")); 
//Good%20Morning%21

(3)openObj: 这个函数是用来打开一个新的表单的。你也可以自己试一试。

 

CRM中有无数的按钮,上面用了一个例子来教给大家如何发现ribbon和JS的工作原理。如果你感兴趣,你也可以研究一下其他的按钮。相信这个方法对大家日后的开发是有所帮助的。







本文转自JF Zhu博客园博客,原文链接:    http://www.cnblogs.com/jfzhu/archive/2012/09/27/2706356.html,如需转载请自行联系原作者







相关文章
|
机器学习/深度学习 BI 数据格式
|
23天前
|
缓存 监控 安全
通义大模型与现有企业系统集成实战《CRM案例分析与安全最佳实践》
本文档详细介绍了基于通义大模型的CRM系统集成架构设计与优化实践。涵盖混合部署架构演进(新增向量缓存、双通道同步)、性能基准测试对比、客户意图分析模块、商机预测系统等核心功能实现。同时,深入探讨了安全防护体系、三级缓存架构、请求批处理优化及故障处理机制,并展示了实时客户画像生成和动态提示词工程。通过实施,显著提升客服响应速度(425%)、商机识别准确率(37%)及客户满意度(15%)。最后,规划了技术演进路线图,从单点集成迈向自主优化阶段,推动业务效率与价值持续增长。
|
2月前
|
机器学习/深度学习 人工智能 BI
500人规模的企业CRM必备的5大关键能力
文章介绍了适配大中型企业CRM系统的五大关键功能:精细化销售管理、全渠道营销、PaaS定制化、AI应用及生态连接能力。以纷享销客为例,详细解析了其在销售线索管理、行为与流程精细化管理、全渠道获客、灵活定制开发、AI赋能及生态协同等方面的优势。文章指出,在数字经济浪潮下,CRM已成为企业数字化转型的核心工具,通过重构客户运营体系,助力企业提升效率、优化决策并实现可持续增长。
|
4月前
|
安全 搜索推荐
销售易CRM:实施与服务全程护航,确保企业价值落地
销售易CRM深知实施与服务对企业部署客户关系管理系统的重要性。通过专业实施团队提供定制化部署方案,确保系统与企业业务无缝对接;全程培训帮助企业培养内部专家,推动CRM应用水平提升;7×24小时技术支持及时解决用户问题,保障系统稳定运行;持续迭代优化适应企业成长需求。销售易CRM以全方位服务助力企业数字化转型。
|
4月前
|
数据可视化 搜索推荐 安全
点晴CRM:助力企业高效管理客户关系
在当今竞争激烈的商业环境中,客户关系管理(CRM)已成为企业制胜的关键。点晴CRM,作为一款专为企业打造的客户关系管理解决方案,致力于帮助企业高效管理客户关系,提升销售业绩,实现可持续增长。
56 0
|
1月前
|
存储 数据可视化 BI
中小企业如何通过点晴CRM实现低成本高效运营?
在竞争激烈的市场环境中,中小企业往往面临资源有限、客户管理混乱、销售效率低下等挑战。如何在不增加高昂成本的前提下,提升运营效率、优化客户管理,成为企业持续增长的关键。
35 1