acumatica
Villkorligt dölja flikar
Sök…
Introduktion
I det här ämnet kommer du att utforska två metoder för att villkorligt dölja flikar på datainmatningsskärmar i Acumatica.
VisibleExp-egenskap för PXTab-kontrollen i Aspx
Egenskapen VisibleExp är ett booleskt uttryck som avgör om en given flik är synlig (när det logiska uttrycket är SANT) eller dold. Du anger egenskapen VisibleExp för PXTab-kontroller på Aspx-sidan:
<px:PXTabItem Text="Credit Card Processing Info" BindingContext="form"
VisibleExp="DataControls["chkIsCCPayment"].Value = 1">
VisibleExp består av inmatningskontroller placerade inuti behållaren med ID anges i egenskapen BindingContext av PXTab kontroll. Du får inte använda ingångskontroller från mer än en behållare. Tillgång till en specifik ingångskontroll tillhandahålls via DataControls
ordboken med dess ID, inte namnet på ett DAC-fält.
Vanligtvis används VisibleExp- egenskapen för att komponera ganska enkla booleska uttryck med hårkodade ingångsstyrvärden, som troligen inte kommer att förändras med tiden. Följande uttryck används till exempel på skärmen Försäljningsorder (SO.30.10.00) för att dölja fliken Betalningsinställning för order av överföringstypen :
<px:PXTabItem Text="Payment Settings"
VisibleExp="DataControls["edOrderType"].Value!=TR" BindingContext="form">
För att dölja fliken Aktiviteter för potentiella kunder med ny status
För att dölja Aktiviteter fliken från Leads skärmen (CR.30.10.00) ställer egendom BindingContext att bilda (toppnivå Lead sammanfattad form håller formen ID) och definiera VisibleExp att returnera false om bly status är öppen (Status dropdown håller edStatus ID) :
<px:PXTabItem Text="Activities" LoadOnDemand="True"
BindingContext="form" VisibleExp="DataControls["edStatus"].Value != H">
TillåtVälj egendom för datavyer
Till skillnad från egenskapen VisibleExp , definierad i Aspx, manipulerar du AllowSelect- egenskapen för en datavy genom BLC- eller BLC-förlängningskod. Egenskapen AllowSelect gör det möjligt att använda mer komplexa booleska uttryck (i jämförelse med egenskapen VisibleExp ) och vid behov hämta ytterligare information från databasen eller andra källor som inte finns tillgängliga på en webbsida.
Nedan finns tre vanligaste scenarier att arbeta med egenskapen AllowSelect :
RowSelected event handler för toppnivåenhet för att dölja fliken Applications för fakturor av Cash Sale och Cash Return typer:
public class SOInvoiceEntry : ARInvoiceEntry { ... protected override void ARInvoice_RowSelected(PXCache cache, PXRowSelectedEventArgs e) { ... Adjustments.AllowSelect = doc.DocType != ARDocType.CashSale && doc.DocType != ARDocType.CashReturn; } ... }
BLC konstruktören att visa Avsnitt Påfyllning Info fliken på objekt lagret Details skärmen endast när båda lagerpåfyllning och Inventory subitems funktioner aktiveras:
public class INItemSiteMaint : PXGraph<INItemSiteMaint, INItemSite> { ... public INItemSiteMaint() { ... bool enableSubItemReplenishment = PXAccess.FeatureInstalled<FeaturesSet.replenishment>() && PXAccess.FeatureInstalled<FeaturesSet.subItem>(); subitemrecords.AllowSelect = enableSubItemReplenishment; } ... }
RowSelected hanterare för toppnivåenhet för att dölja fliken Avskrivningshistorik såvida inte nuvarande tillgång är avskrivbar och Visning av avskrivningshistorik är inställd till sida vid sida i inställningarna för anläggningstillgångar:
public class AssetMaint : PXGraph<AssetMaint, FixedAsset> { ... protected virtual void FixedAsset_RowSelected(PXCache sender, PXRowSelectedEventArgs e) { ... AssetHistory.AllowSelect = asset.Depreciable == true && fasetup.Current.DeprHistoryView == FASetup.deprHistoryView.SideBySide; } ... }
Varje gång AllowSelect- egenskapen används för att villkorligt ändra flikens synlighet med BLC- eller BLC-tilläggskod, måste du ställa in egenskapen RepaintOnDemand till falsk i Aspx för motsvarande PXTab-behållare:
<px:PXTabItem Text="Depreciation History" RepaintOnDemand="false">
Egenskapen RepaintOnDemand gäller som standard. Den här egenskapen styr initieringen av PXTab-behållaren: när den är satt till sant , kommer PXTab inte att initialiseras förrän den valdes av en användare. Uppenbarligen behöver du RepaintOnDemand vara inställd på falskt för att garantera korrekt beteende hos den givna PXTab-behållaren trots att den valt eller inte.
För att dölja korsreferensfliken för lagerartiklar som inte kan säljas
För att dölja Korsreferens flik från beståndet Items skärmen (IN.20.25.00) för objekt med någon försäljning status på följande sätt:
implementera InventoryItem_RowSelected hanterare i tillägget InventoryItemMaint BLC för att ställa in AllowSelect- egenskapen till falsk för
itemxrefrecords
föritemxrefrecords
om artikelstatus sattes till No Sales :public class InventoryItemMaintExt : PXGraphExtension<InventoryItemMaint> { protected void InventoryItem_RowSelected(PXCache sender, PXRowSelectedEventArgs e) { InventoryItem item = (InventoryItem)e.Row; if (item == null) return; Base.itemxrefrecords.AllowSelect = (item.ItemStatus != InventoryItemStatus.NoSales); } }
i anpassning manager, set RepaintOnDemand egenskapen till false för fliken Korsreferens och publicera anpassning:
När du slutfört 2 ganska enkla stegen ovan, bör fliken Korsreferens inte vara tillgängliga för lager Objekt med någon försäljning status:
För att dölja fliken Attribut för inaktiva lagerartiklar
Till villkorligt hide ** Egenskaper ** flik från beståndet Items skärmen (IN.20.25.00) Gör så här:
implementera InventoryItem_RowSelected hanterare i tillägget InventoryItemMaint BLC för att ställa in AllowSelect- egenskapen till falsk för vyerna för
Answers
andCategory
data om objektstatus ställdes inaktiv . Observera också Synlig egenskap inställd på falsk förPXUIFieldAttribute
tillagd i fältetInventoryItem.ImageUrl
av CacheAttached- hanterare:public class InventoryItemMaintExt : PXGraphExtension<InventoryItemMaint> { protected void InventoryItem_RowSelected(PXCache sender, PXRowSelectedEventArgs e) { InventoryItem item = (InventoryItem)e.Row; if (item == null) return; bool showAttributesTab = item.ItemStatus != InventoryItemStatus.Inactive; Base.Answers.AllowSelect = Base.Category.AllowSelect = showAttributesTab; PXUIFieldAttribute.SetVisible<InventoryItem.imageUrl>(sender, item, showAttributesTab); } [PXMergeAttributes(Method = MergeMethod.Append)] [PXUIField(DisplayName = "Image")] protected void InventoryItem_ImageURL_CacheAttached(PXCache sender) { } }
i Anpassningsansvarig, ställ in RepaintOnDemand- egenskapen till falsk för fliken Attribut och publicera anpassning:
När du har genomfört två steg ovan bör fliken Attribut inte vara tillgängliga för lagerobjekt med inaktiv status: