2011-04-28 10 views
7

Soy nuevo en crm 2011. He encontrado documentación sobre cómo agregar un nuevo botón a la cinta. Y cómo agrupar los botones. Pero necesito un botón de menú desplegable en la cinta. ¿Cómo puedo hacer esto? No encontré ninguna información sobre esto.Agregar menú desplegable a la cinta CRM 2011

Gracias!

Respuesta

13

Esto debería comenzar. Si todo lo que necesita es un menú estático, puede colocar la etiqueta dentro del Control de Flyout y crear el menú desde allí.

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

Si desea generar el menú Dinámicamente, puede utilizar este control de menú desplegable. Tenga en cuenta los atributos Populate que se agregaron. Luego tienes que crear el menú a través de 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" /> 

Creé dos comandos que acceden a las funciones de javascript. DynamicMenu crea el menú y la búsqueda se usa para determinar qué botón de control se presionó. Tenga en cuenta que ambos pasan el parámetro CommandProperties, que es importante para el 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> 

Estas son las funciones 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

cuando llame a la función DynamicMenu, ¿Qué debería pasar como parámetro? (The commandproperties) – ThdK

+0

Crm pasa las variables que necesita. Eso es lo que esta línea XML es para . En las funciones que acabo de poner el mismo nombre para la coherencia, no es necesario. Aquí hay una lista de los posibles parámetros que puede decirle a CRM que envíe: http://msdn.microsoft.com/en-us/library/gg309332.aspx –

+0

¿Por qué esto no funciona para mí? Copie pegado su código para el primer y segundo ejemplo ambos no funcionan para crm 2011 en premisa para mí. Recibo un error de XML al abrir el archivo From. Agregué una ubicación correcta de otro botón, que eliminé – Florian

Cuestiones relacionadas