Sök…


Skapa en rullgardinsmeny för en skärm

Anta att du måste definiera en rullgardinsmeny för en viss Acumatica-skärm, till exempel Rapporter-menyn på följande skärmdump.

ange bildbeskrivning här

Detta kan uppnås på tre olika sätt:

  • Genom att lägga till ett verktygsfält med ett menyalternativ till skärmens ASPX
  • Genom att förklara en speciell "mapp" -handling till diagrammet och lägga till menyalternativ i koden
  • Genom att använda delsystemet Automation i Acumatica Framework (som inte omfattas av detta exempel)

Alternativ 1: Skapa en rullgardinsmeny i ASPX

Först och främst, se till att ASPX-sidans PXDataSource-element innehåller alla nödvändiga kommandon som motsvarar de grafhandlingar som du vill utföra när du klickar på ett menyalternativ.

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

Lägg sedan till ett anpassat verktygsfältelement direkt efter PXDataSource-elementet. I den definierar du en PXToolbarButton med önskade rullgardinsmenyalternativ som länkar till respektive datakälla-kommandon, som visas i följande kod.

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

Det här alternativet kan se frestande ut på grund av dess enkelhet; emellertid finns det en viktig nackdel . Om du implementerar en sådan rullgardinsmeny på en skärm med en behandlingsindikator (till exempel en dokumentfrisläppningsskärm eller en massbearbetningsskärm) visas indikatorn till vänster om din rullgardinsmeny, som visas nedan.

ange bildbeskrivning här

Om detta inte är önskvärt, överväg att definiera en rullgardinsmeny i koden som beskrivs i avsnittet Alternativ 2 nedan.

Alternativ 2: Skapa en meny i diagrammet

Först, i sidans graf, förklara en "mapp" -åtgärd som motsvarar rullgardinsmenyknappen.

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

Därefter, i grafens konstruktör, ange att åtgärden verkligen är en rullgardinsmeny och lägg till alla åtgärder som måste visas som menyalternativ, som visas nedan.

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

Om du väljer det här tillvägagångssättet kommer bearbetningsindikatorn alltid att visas till höger om din meny, vilket är utan tvekan bättre UX.



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow