我正在尝试根据以下 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 客户端中工作......