Dynamics CRM 2011 - 禁用动态添加的FlyoutAnchor子菜单按钮

时间:2012-03-09 10:36:20

标签: xml dynamics-crm-2011 ribbon flyout

我成功地按照以下Add Dropdown Menu to CRM 2011 ribbon的答案,实现了三个动态加载的FlyoutAnchor按钮和子菜单按钮等。

昨天子菜单按钮工作正常(单击事件被触发等),但在使用Ribbon XML等重新导入解决方案后,子菜单按钮告诉我(在工具提示中)它们被禁用。确切的消息是“此按钮当前已禁用。您可能没有选择使用此功能的项目。如果您没有权限使用此功能,请与您的系统管理员联系”。

所以我又回到了之前的Ribbon XML,但是子菜单按钮仍处于禁用状态。看起来我遇到了以下线程中描述的相同问题:CRM 2011 Dynamic Ribbon disabled HELP!!。但我已经在我的服务器上安装了Rollup 6,所以不应该这样。

我已经尝试重置IIS并重新导入解决方案(多次)。我还检查/添加了< EnableRule Id =“Mscrm.Enabled”/>规则等。

我无法再次启用子菜单按钮。我究竟做错了什么?请帮帮我。

2 个答案:

答案 0 :(得分:2)

我终于再次启用了子菜单按钮。很难说出让它再次起作用的确切行动组合,但我会尝试在此处记录它作为参考。 建议的解决方案是强制CRM完全更新功能区。这可以通过执行以下步骤来完成:

  1. 将您的解决方案导出为备份。
  2. 在某处解压缩此导出解决方案的副本,以便您可以修改'customizations.xml'文件以更新'问题'实体的RibbonDiffXml。
  3. 替换< RibbonDiffXml> ...< / RibbonDiffXml>使用空的Ribbon diff xml,即:

      <RibbonDiffXml>
        <CustomActions />
        <Templates>
            <RibbonTemplates Id="Mscrm.Templates"></RibbonTemplates>
        </Templates>
        <CommandDefinitions />
        <RuleDefinitions>
          <TabDisplayRules />
          <DisplayRules />
          <EnableRules />
        </RuleDefinitions>
        <LocLabels />
      </RibbonDiffXml>
    
  4. 保存您的更改。

  5. 重新压缩已更改的解决方案,导入并发布。
  6. 从步骤1重新导入原始解决方案并发布。功能区将重新创建。
  7. 您的按钮应该再次启用。
  8. 可以采用的另一种方法是使用Ribbon Workbench for Dynamics CRM 2011 (Beta)。但要小心并始终进行解决方案备份,因为我发现该工具仍然非常多(或者我的解决方案太大)。 使用该工具进行一些功能区更改(例如:向“问题”实体添加新按钮),重新发布和测试。如果再次启用子菜单按钮,请重新导入并发布原始备份。子菜单按钮可能会保持启用状态。

    因此,CRM内部出现了一些问题,并且通过强制重新构建有缺陷的功能区,CRM可以恢复自身或其他东西......我无法真正理解它。

答案 1 :(得分:1)

我最近遇到过类似的问题。你是从功能区运行的javascript吗?如果是这样,功能区可能会禁用您的按钮,因为它无法找到您正在调用的javascript函数(我无法找到支持此信念的文档,define actionsdefine javascript页面没有提及它,它可以我的情况刚刚巧合)。您最近是否更新了与功能区关联的js文件?