資料檢視上的 AllowSelect 屬性

與 Aspx 中定義的 VisibleExp 屬性不同,你通過 BLC 或 BLC 擴充套件程式碼運算元據檢視的 AllowSelect 屬性。該 AllowSelect 特性使得我們可以使用更復雜的布林表示式(相較於 VisibleExp 屬性),如果有必要,檢索網頁上沒有可用的資料庫或其他來源的額外資訊。

以下是使用 AllowSelect 屬性的 3 種最常見方案 :

  • **** 頂級實體的 RowSelected 事件處理程式,用於隱藏現金銷售現金返還型別發票的“ 應用程式” 選項卡 : ****** ******

     public class SOInvoiceEntry : ARInvoiceEntry
     {
         ...
         protected override void ARInvoice_RowSelected(PXCache cache, PXRowSelectedEventArgs e)
         {
             ...
    
             Adjustments.AllowSelect =
                 doc.DocType != ARDocType.CashSale &&
                 doc.DocType != ARDocType.CashReturn;
         }
         ...
     }
    
  • BLC 建構函式僅在啟用“ 庫存補貨” 和“ 庫存子項” 功能時才顯示 “ 專案倉庫詳細資訊” 螢幕上的“子項補貨資訊” 選項卡 : **** ** **

     public class INItemSiteMaint : PXGraph<INItemSiteMaint, INItemSite>
     {
         ...
         public INItemSiteMaint()
         {
             ...        
    
             bool enableSubItemReplenishment = PXAccess.FeatureInstalled<FeaturesSet.replenishment>() && PXAccess.FeatureInstalled<FeaturesSet.subItem>();
             subitemrecords.AllowSelect = enableSubItemReplenishment;
         }
         ...
     }
    
  • **** 用於隱藏折舊歷史選項卡的頂級實體的 RowSelected 處理程式,除非當前資產可折舊且折舊歷史記錄檢視在固定資產首選項中設定為並排

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

每次使用 AllowSelect 屬性通過 BLC 或 BLC 擴充套件程式碼有條件地更改選項卡可見性時,必須在 Aspx 中為相應的 PXTab 容器將 RepaintOnDemand 屬性設定為 false

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

預設情況下, RepaintOnDemand 屬性為 true 。此屬性控制 PXTab 容器的初始化:當設定為 true 時,PXTab 將不會被初始化,直到使用者選擇它為止。顯然,你需要將 RepaintOnDemand 設定為 false 以保證給定 PXTab 容器的正確行為,無論它是否被選中。

隱藏無法出售的庫存專案的交叉引用選項卡

要從 “ 庫存專案” 螢幕(IN.20.25.00) 隱藏“ 無銷售” 狀態的專案的“ 交叉引用” 選項卡,請執行以下操作: **** ******

  1. 如果 Item Status 設定為 No Sales ,則在 InventoryItemMaint BLC 擴充套件中實現 InventoryItem_RowSelected 處理程式,以便為 itemxrefrecords 資料檢視將 AllowSelect 屬性設定為 false : **** ******

    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. 在定製經理,設定 RepaintOnDemand 屬性為交叉引用選項卡併發布定製: StackOverflow 文件

完成上述 2 個非常簡單的步驟後,對於沒有銷售狀態的庫存專案,不應訪問 “ 交叉引用” 選項卡 : ******

StackOverflow 文件

隱藏非活動 Stock 產品的屬性選項卡

要從 Stock Items 螢幕(IN.20.25.00) 有條件地隱藏** Attributes **選項卡,請按以下步驟操作:

  1. 如果 Item Status 設定為 Inactive ,則在 InventoryItemMaint BLC 擴充套件中實現 InventoryItem_RowSelected 處理程式,以便為 AnswersCategory 資料檢視將 AllowSelect 屬性設定為 false 。另請注意, CacheAttached 處理程式在 InventoryItem.ImageUrl 欄位上新增的 PXUIFieldAttributeVisible 屬性設定為 false : **** ****** **** ****** ****

    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. 在 Customization manager 中,為 Attributes 選項卡設定 RepaintOnDemand 屬性為 false 併發布自定義: **** StackOverflow 文件

完成上述兩個步驟後,對於處於非活動狀態的庫存專案,不應訪問 “ 屬性” 選項卡 : ******

StackOverflow 文件