Recherche…


Création d'un menu déroulant pour un écran

Supposons que vous deviez définir un menu déroulant pour un écran Acumatica particulier, tel que le menu Rapports de la capture d'écran suivante.

entrer la description de l'image ici

Cela peut être réalisé de trois manières différentes:

  • En ajoutant une barre d'outils avec un élément de menu à l'ASPX de l'écran
  • En déclarant une action "dossier" spéciale au graphique et en ajoutant des éléments de menu dans le code
  • En utilisant le sous-système Automation du framework Acumatica (non couvert par cet exemple)

Option 1: Création d'un menu déroulant dans ASPX

Tout d'abord, assurez-vous que l'élément PXDataSource de la page ASPX contient toutes les commandes nécessaires correspondant aux actions du graphique que vous souhaitez effectuer lorsque vous cliquez sur un élément de menu.

<px:PXDataSource 
    ID="ds" runat="server" Visible="True" PrimaryView="TranslHistRecords" TypeName="PX.Objects.CM.TranslationHistoryMaint">
    <CallbackCommands>
        ...
        <px:PXDSCallbackCommand Name="TranslationDetailsReport" Visible="False"/>
        ...
    </CallbackCommands>
</px:PXDataSource>

Ensuite, ajoutez un élément de barre d'outils personnalisé juste après l'élément PXDataSource. Dans ce document, définissez un PXToolbarButton avec les éléments de menu déroulant souhaités liés aux commandes de source de données respectives, comme indiqué dans le code suivant.

<px:PXToolBar ID="toolbar1" runat="server" SkinID="Navigation" BackColor="Transparent" CommandSourceID="ds">
    <Items>
        <px:PXToolBarButton Text="Reports">
            <MenuItems>
                <px:PXMenuItem Text="Translation Details" CommandSourceID="ds" CommandName="TranslationDetailsReport"/>
            </MenuItems>
        </px:PXToolBarButton>
    </Items>
    <Layout ItemsAlign="Left" />
</px:PXToolBar>

Cette option peut sembler tentante en raison de sa simplicité. Cependant, il y a un inconvénient important . Si vous implémentez une telle liste déroulante sur un écran avec un indicateur de traitement (tel qu'un écran de publication de document ou un écran de traitement en masse), l'indicateur apparaîtra à gauche de votre menu déroulant, comme indiqué ci-dessous.

entrer la description de l'image ici

Si cela n'est pas souhaitable, envisagez de définir un menu déroulant dans le code, comme décrit dans la section Option 2 ci-dessous.

Option 2: Création d'un menu dans le graphique

Tout d'abord, dans le graphique de la page, déclarez une action "dossier" qui correspondra au bouton du menu déroulant.

public PXAction<TranslationHistory> reportsFolder;
[PXUIField(DisplayName = "Reports", MapEnableRights = PXCacheRights.Select)]
[PXButton(SpecialType = PXSpecialButtonType.Report)]
protected virtual IEnumerable Reportsfolder(PXAdapter adapter)
{
    return adapter.Get();
}

Ensuite, dans le constructeur du graphique, indiquez que l'action est bien un menu déroulant et ajoutez toutes les actions à afficher sous forme d'éléments de menu, comme indiqué ci-dessous.

public TranslationHistoryMaint()
{
    this.reportsFolder.MenuAutoOpen = true;
    this.reportsFolder.AddMenuAction(this.translationDetailsReport);
}

Si vous sélectionnez cette approche, l'indicateur de traitement apparaîtra toujours à droite de votre menu, ce qui est sans doute meilleur.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow