2

我正在尝试根据以下 SO 答案创建三个动态填充的 FlyoutAnchor 功能区按钮:将下拉菜单添加到 CRM 2011 功能区

所有三个 FlyoutAnchor 按钮都使用相同的PopulateQueryCommand。链接到命令的 JavaScript 函数(参见下面的代码块)获取作为第一个参数传递的CommandProperties CrmParameter,以便能够识别被单击的弹出按钮(并且应该填充动态添加的下拉菜单项)。

function DynamicMenu(CommandProperties) {
    /// <summary>Dynamically generate menu items based on context</summary>
    /// <param name="CommandProperties">
    ///    Command properties crm parameter sent from the ribbon.  object used to inject the Menu XML
    /// </param>

    debugger;

    var menuXml = '<Menu Id=\"Sample.DynamicMenu\">' +
                       // ... Other menu XML stuff goes here
                  '</Menu>';

    CommandProperties.PopulationXML = menuXml;  // error here...PopulationXML is undefined... :-(

    // ...
}

该函数被很好地调用并传递了“CommandProperties”参数(它不是null和不是undefined),但是当我尝试设置 PopulationXML 时出现错误,因为这个属性是undefined. 下面列出的其他三个预期属性也是undefined

  • SourceControlId:启动事件的 Ribbon 控件的 Id 值。
  • CommandValueId:单击按钮时与命令事件一起发送的字符串。
  • MenuItemId:从控件到菜单项的 Id 的引用。

当我传入第二个不同的 CrmParameter 时,例如PrimaryEntityTypeName,此参数已正确填充/设置。

CommandProperties争论混乱的原因可能是什么?

2012 年 2 月 21 日更新:为了完整起见,我还尝试了单按钮方法,例如将下拉菜单添加到 CRM 2011 功能区中所述,但这给了我相同的结果(没有可用的 Commandproperties 对象)。我的 CRM 服务器正在运行 Rollup 6,这可能与它有关吗?有没有不同的方法来获得这种弹出式功能区菜单?也许是纯 JavaScript 的东西?它也应该在 Outlook CRM 客户端中工作......

4

1 回答 1

1

我遇到了同样的问题,解决方法不是使用'<Menu Id=\"Sample.DynamicMenu\">',而是使用'<Menu Id="Sample.DynamicMenu">',区别在于不使用转义字符"

于 2012-02-23T11:47:28.507 回答