Szukaj…


Wprowadzenie

W tym temacie zapoznasz się z dwoma podejściami do warunkowego ukrywania kart na ekranach wprowadzania danych w programie Acumatica.

VisibleExp Właściwość kontrolki PXTab w Aspx

Właściwość VisibleExp jest wyrażeniem logicznym, które określa, czy dana karta jest widoczna (gdy wyrażenie logiczne ma wartość PRAWDA), czy jest ukryta. Określasz właściwość VisibleExp dla kontrolek PXTab na stronie Aspx:

<px:PXTabItem Text="Credit Card Processing Info" BindingContext="form" 
    VisibleExp="DataControls[&quot;chkIsCCPayment&quot;].Value = 1">

VisibleExp składa się z kontrolek wejściowych umieszczonych w kontenerze o identyfikatorze określonym we właściwości BindingContext kontrolki PXTab. Nie możesz używać kontrolek wejściowych z więcej niż jednego kontenera. Dostęp do określonej kontroli wejściowej zapewnia słownik DataControls według jego identyfikatora, a nie nazwy pola DAC.

Zwykle właściwość VisibleExp służy do komponowania dość prostych wyrażeń boolowskich z zakodowanymi wejściowymi wartościami kontrolnymi, których zmiany z czasem nie są prawdopodobne. Na przykład następujące wyrażenie jest używane na ekranie Zamówienia sprzedaży (SO.30.10.00), aby ukryć kartę Ustawienia płatności dla zamówień typu Przeniesienie :

<px:PXTabItem Text="Payment Settings" 
    VisibleExp="DataControls[&quot;edOrderType&quot;].Value!=TR" BindingContext="form">

Aby ukryć kartę Działania dla potencjalnych klientów z nowym statusem

Aby ukryć kartę Działania na ekranie Leads (CR.30.10.00), ustaw właściwość BindingContext na form ( formularz Podsumowanie potencjalnych klientów na najwyższym poziomie zawiera identyfikator formularza ) i zdefiniuj VisibleExp, aby zwracał FAŁSZ, jeśli status potencjalnych szans jest Otwarty (menu rozwijane Status zawiera identyfikator edStatus ) :

<px:PXTabItem Text="Activities" LoadOnDemand="True" 
    BindingContext="form" VisibleExp="DataControls[&quot;edStatus&quot;].Value != H">

wprowadź opis zdjęcia tutaj

AllowSelect Właściwość w widokach danych

W przeciwieństwie do właściwości VisibleExp , zdefiniowanej w Aspx, manipulujesz właściwością AllowSelect widoku danych za pomocą kodu rozszerzenia BLC lub BLC. Właściwość AllowSelect umożliwia stosowanie bardziej złożonych wyrażeń boolowskich (w porównaniu z właściwością VisibleExp ) i, jeśli to konieczne, pobieranie dodatkowych informacji z bazy danych lub innych źródeł niedostępnych na stronie internetowej.

Poniżej znajdują się 3 najczęstsze scenariusze pracy z właściwością AllowSelect :

  • RowSelected moduł obsługi zdarzeń dla encji najwyższego poziomu, aby ukryć kartę Aplikacje dla faktur sprzedaży gotówkowej i typów zwrotu gotówki :

     public class SOInvoiceEntry : ARInvoiceEntry
     {
         ...
         protected override void ARInvoice_RowSelected(PXCache cache, PXRowSelectedEventArgs e)
         {
             ...
    
             Adjustments.AllowSelect =
                 doc.DocType != ARDocType.CashSale &&
                 doc.DocType != ARDocType.CashReturn;
         }
         ...
     }
    
  • Konstruktor BLC, aby wyświetlić kartę Informacje o uzupełnieniu zapasów na ekranie Szczegóły magazynu towarów tylko wtedy, gdy aktywowane są zarówno funkcje Uzupełnianie zapasów, jak i Elementy zapasów zapasów :

     public class INItemSiteMaint : PXGraph<INItemSiteMaint, INItemSite>
     {
         ...
         public INItemSiteMaint()
         {
             ...        
    
             bool enableSubItemReplenishment = PXAccess.FeatureInstalled<FeaturesSet.replenishment>() && PXAccess.FeatureInstalled<FeaturesSet.subItem>();
             subitemrecords.AllowSelect = enableSubItemReplenishment;
         }
         ...
     }
    
  • Funkcja RowSelected dla encji najwyższego poziomu, aby ukryć kartę Historia amortyzacji , chyba że bieżący składnik aktywów podlega amortyzacji, a Widok historii amortyzacji jest ustawiony obok siebie w Preferencjach środków trwałych:

     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;
         }
         ...
     }
    

Za każdym razem, gdy właściwość AllowSelect jest używana do warunkowej zmiany widoczności tabulatora za pomocą kodu rozszerzenia BLC lub BLC, należy ustawić właściwość RepaintOnDemand na wartość false w Aspx dla odpowiedniego kontenera PXTab:

<px:PXTabItem Text="Depreciation History" RepaintOnDemand="false">

Domyślnie właściwość RepaintOnDemand ma wartość true . Ta właściwość steruje inicjalizacją kontenera PXTab: po ustawieniu wartości true PXTab nie zostanie zainicjowany, dopóki nie zostanie wybrany przez użytkownika. Oczywiście potrzebujesz RepaintOnDemand ustawionego na false, aby zagwarantować prawidłowe zachowanie danego kontenera PXTab, niezależnie od tego, czy został on wybrany, czy nie.

Aby ukryć kartę Odsyłacz dla pozycji magazynowych, których nie można sprzedać

Aby ukryć zakładkę odsyłaczy od ekranu magazynie pozycji (IN.20.25.00) dla elementów posiadających status Brak sprzedaży, należy postępować w następujący sposób:

  1. zaimplementuj moduł obsługi InventoryItem_RowSelected w rozszerzeniu BLC InventoryItemMaint, aby ustawić wartość właściwości AllowSelect na false dla itemxrefrecords danych itemxrefrecords jeśli Status pozycji został ustawiony na Brak sprzedaży :

    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);
        }
    }
    
  2. w menedżerze dostosowań ustaw właściwość RepaintOnDemand na wartość false dla karty Odsyłacz i opublikuj dostosowanie: wprowadź opis zdjęcia tutaj

Po wykonaniu 2 dość prostych kroków powyżej karta Odsyłacz nie powinna być dostępna dla pozycji magazynowych bez statusu sprzedaży :

wprowadź opis zdjęcia tutaj

Aby ukryć kartę Atrybuty dla nieaktywnych pozycji magazynowych

Aby warunkowo ukryć kartę ** Atrybuty ** na ekranie Pozycje magazynowe (IN.20.25.00), wykonaj następujące czynności:

  1. zaimplementuj moduł obsługi InventoryItem_RowSelected w rozszerzeniu BLC InventoryItemMaint, aby ustawić dla właściwości AllowSelect wartość false dla widoków danych Answers i Category jeśli Status elementu został ustawiony na Nieaktywny . PXUIFieldAttribute także uwagę na wartość Visible ustawioną na false dla PXUIFieldAttribute dodanego w polu InventoryItem.ImageUrl przez moduł obsługi pamięci podręcznej CacheAttached :

    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)
        { }
    }
    
  2. w menedżerze dostosowywania ustaw dla właściwości RepaintOnDemand wartość false dla karty Atrybuty i opublikuj dostosowanie: wprowadź opis zdjęcia tutaj

Po wykonaniu 2 kroków powyżej karta Atrybuty nie powinna być dostępna dla pozycji magazynowych o stanie Nieaktywne :

wprowadź opis zdjęcia tutaj



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow