2011-04-28 97 views
7

我是crm 2011的新手。我找到了關於如何將新按鈕添加到功能區的文檔。以及如何分組按鈕。但我需要功能區中的下拉菜單按鈕。我怎樣才能做到這一點?我沒有找到任何關於此的信息。將下拉菜單添加到CRM 2011功能區

謝謝!

回答

13

這應該讓你開始。如果您只需要一個靜態菜單,則可以將該標籤放置在Flyout Control中,然後從此處構建菜單。

<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> 

如果您想動態生成菜單,則可以改爲使用此彈出控件。請注意添加的填充屬性。 然後,你必須通過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構建菜單,並使用Search來確定按下哪個按鈕控件。注意這兩個都傳遞了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'); 
    } 
} 
+0

當我打電話的DynamicMenu功能,我應該怎麼傳遞的參數? (命令屬性) – ThdK 2011-05-02 13:09:44

+0

Crm傳遞你需要的變量。這就是這條XML線對於。在函數中,我只是爲了一致性而使用相同的名稱,您不必這樣做。以下是可以告訴CRM發送的可能參數的列表:http://msdn.microsoft.com/en-us/library/gg309332.aspx – 2011-05-02 23:43:33

+0

爲什麼這不適用於我?我複製粘貼你的第一和第二exmaple的代碼都不適用於crm 2011在我的前提下。打開From時出現XML錯誤。我添加了另一個按鈕的正確位置,我刪除了它 – Florian 2013-08-12 12:44:13