谁能帮我在 CRM 2011 中动态创建功能区按钮。场景是,当我们创建记录时,必须根据在该记录中选择的选项集值动态创建一个功能区按钮。我们可以使用 JScript 或插件或工作流让它工作吗?启用或显示规则在这里没有用,不应触及 XML 代码。
4 回答
快速原则:功能区按钮不是记录的一部分,它们是 UI 的一部分。您可以根据您正在查看的记录进行 UI 更改。因此,您不能向记录“添加”按钮。您可以将按钮添加到实体表单。
插件肯定不会在这里工作,它们在“后端”上执行逻辑。JavaScript 可能会工作,但我认为这会很尴尬。您应该做的是编辑功能区 Xml。现在有一个非常适合编辑功能区的工具:Ribbon Workbench,这个工具使编辑功能区变得更加容易(这是编辑 XML,但这是它的本意)。
那我想你需要
- 为每个操作创建一个功能区按钮。
- 然后按照本教程启用和禁用它们:根据表单值动态启用/禁用功能区按钮。
使用显示规则将是执行此操作的正确方法。
创建多个按钮并在所选选项等于按钮的名称时设置显示规则。
我们可以通过两种方式完成它-
通过插件:(注意:沙盒模式下不工作,会消耗一些时间。)
创建一个解决方案并向其添加指定的实体。在此处浏览源代码
将此解决方案导出到Temp文件夹并解压缩。
编辑customizations.xml 文件以添加我们自己的 RibbondiffXml 标记。
压缩所有 XML 文件并将其导入 CRM。
发布自定义。
通过 XML 编辑:
- 导出应用程序功能区,更新 XML 以添加按钮并在所有地方用 {!EntityLogicalName} 替换实体名称。例如:
<CustomAction Id="New.{!EntityLogicalName}.MyButton.CustomAction" Location="Mscrm.HomepageGrid.{!EntityLogicalName}.MainTab.Management.Controls._children" Sequence="70">
... 仅当当前实体存在配置记录时,添加 EnableRule 以启用此按钮。
<EnableRule Id="New.{!EntityLogicalName}.MyButton.Check"> <CustomRule FunctionName="checkConfigRecord" Library="$webresource:new_/Scripts/ValidateConfigRecords.js"> <CrmParameter Value="SelectedEntityTypeName" /> </CustomRule> </EnableRule>
创建一个名为new_/Scripts/ValidateConfigRecords.js的 JavaScript 库,其中包含计算特定实体存在的配置记录的函数checkConfigRecord 。如果 count 大于 1 返回true。否则为假。
- 导入 ApplicationRibbon 压缩文件
我在 Dynamics 365 上遇到了同样的问题并找到了解决方案。
RibbonWorkbench 包含一个名为“Fly Out Anchor Buttons”的功能
这包括一个名为 PopulateQueryCommand 的属性。
您可以使用此命令在运行时动态(使用 JScript)将菜单选项添加到锚按钮。
RibbonWorkbench 文档包含使用此功能所需的所有信息。