这应该让你开始.如果您只需要一个静态菜单,您可以将标签放在Flyout Control中并从那里构建菜单.
原文链接:https://www.f2er.com/xml/293102.html<FlyoutAnchor Id="Sample.account.form.FlyoutAnchor.Static" Sequence="10" Command="Mscrm.Enabled" Image16by16="/_imgs/placeholders/ribbon_placeholder_16.png" Image32by32="/_imgs/ribbon/newrecord32.png" LabelText="Sample Flyout" Alt="Sample Flyout" TemplateAlias="isv"> <Menu Id="Sample.account.form.Menu"> <MenuSection Id="Sample.account.form.MenuSection" Title="Menu Section Title" Sequence="15"> <Controls Id="Sample.account.form.MenuSection.Controls"> <Button Id="Sample.account.form.Controls.Button.FirstButton" Command="Sample.ButtonCommand.Command" LabelText="First Button" ToolTipTitle="First Button" ToolTipDescription="The first button" TemplateAlias="isv" Sequence="20"/> </Controls> </MenuSection> </Menu> </FlyoutAnchor>
如果要动态生成菜单,可以使用此弹出控件.请注意添加的Populate属性.
然后你必须通过JavaScript构建菜单.
<FlyoutAnchor Id="Sample.account.form.FlyoutAnchor.Dynamic" Sequence="10" Command="Mscrm.Enabled" Image16by16="/_imgs/placeholders/ribbon_placeholder_16.png" Image32by32="/_imgs/ribbon/newrecord32.png" LabelText="Sample Flyout" Alt="Sample Flyout" PopulateDynamically="true" PopulateQueryCommand="Sample.PopulateDynamicMenu" TemplateAlias="isv" />
我创建了两个访问javascript函数的命令. DynamicMenu构建菜单,搜索用于确定按下了哪个按钮控件.注意这两个都传递了CommandProperties参数,这对于javascript很重要.
<CommandDefinition Id="Sample.PopulateDynamicMenu"> <EnableRules> <EnableRule Id="Mscrm.Enabled" /> </EnableRules> <DisplayRules /> <Actions> <JavaScriptFunction FunctionName="DynamicMenu" Library="$webresource:a_JavaScript_File"> <CrmParameter Value="CommandProperties" /> </JavaScriptFunction> </Actions> </CommandDefinition> <CommandDefinition Id="Sample.SearchCommand"> <EnableRules /> <DisplayRules /> <Actions> <JavaScriptFunction FunctionName="Search" Library="$webresource:a_JavaScript_File"> <CrmParameter Value="CommandProperties" /> </JavaScriptFunction> </Actions> </CommandDefinition>
这是javascript函数:
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> var menuXml = '<Menu Id="Sample.DynamicMenu">' + '<MenuSection Id="Sample.Dynamic.MenuSection" Sequence="10">' + '<Controls Id="Sample.Dynamic.Controls">' + '<Button Id="Sample.account.form.Controls.Button.FirstButton"' + ' Command="Sample.SearchCommand"' + ' LabelText="First Button"' + ' ToolTipTitle="First Button"' + ' ToolTipDescription="The first button"' + ' TemplateAlias="isv"' + ' Sequence="20" />' + '</Controls>' + '</MenuSection>' + '</Menu>'; CommandProperties.PopulationXML = menuXml; } function Search(CommandProperties) { ///<summary>Determines which control was pressed</summary> /// <param name="CommandProperties"> /// Command properties crm parameter sent from the ribbon. object used to read which dynamically generated /// button is selected. /// </param> var controlId = CommandProperties.SourceControlId; switch (controlId) { case 'Sample.account.form.Controls.Button.FirstButton': alert(controlId + ' was pressed!'); break; default: alert('unknown'); } }