Fügen Sie das Dropdown -Menü zum CRM 2011 Ribbon hinzu
-
26-10-2019 - |
Frage
Ich bin neu in CRM 2011. Ich habe Dokumentation gefunden, wie man dem Band einen neuen Knopf hinzufügen kann. Und wie man die Tasten gruppiert. Aber ich brauche eine Dropdown -Menü -Schaltfläche im Band. Wie kann ich das machen? Ich habe keine Informationen dazu gefunden.
Vielen Dank!
Lösung
Dies sollte Ihnen loslegen. Wenn Sie nur ein statisches Menü benötigen, können Sie das Tag in die Flyout -Steuerung einfügen und das Menü von dort aus erstellen.
<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>
Wenn Sie das Menü dynamisch generieren möchten, können Sie stattdessen diese Flyout -Steuerung verwenden. Beachten Sie die fehlenden Attribute, die hinzugefügt wurden. Dann müssen Sie das Menü über JavaScript erstellen.
<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" />
Ich habe zwei Befehle erstellt, die auf die JavaScript -Funktionen zugreifen. DynamicMenu erstellt das Menü und die Suche wird verwendet, um zu bestimmen, welcher Tastensteuerung gedrückt wurde. Beachten Sie beide, diese Parameter commandProperties Dies ist wichtig für das 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>
Hier sind die JavaScript -Funktionen:
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');
}
}