0

我想在所有用户的费用收据屏幕 (EP301020) 上的“费用项目”查找屏幕中隐藏列(库存 ID 和描述除外)。

我如何在“列配置”的“可用列”部分中为所有用户设置一些列(不需要),默认情况下,查找屏幕中只有所需的列。默认情况下,所有列都是列配置中的选定列列表中。请指教。谢谢

4

1 回答 1

1

下面是隐藏可用和选定列表框中的列的代码。如果您只需要初始化可用和选定列表框中的列,请考虑使用 Acumatica默认表格布局功能。请注意,列配置是用户配置,因此您可以初始化列,但不能在初始化后覆盖用户选择。


要从选择器中完全删除列,您需要重新定义 InventoryID 选择器并在 PXSelector 的第二个参数中显式声明要查看的列。

您可以通过创建图形扩展ExpenseClaimDetailEntry并使用CacheAttached方法重新定义选择器来做到这一点:

using PX.Data;
using PX.Objects.IN;

namespace PX.Objects.EP
{
    public class ExpenseClaimDetailEntry_Extension : PXGraphExtension<ExpenseClaimDetailEntry>
    {
        [PXMergeAttributes(Method = MergeMethod.Replace)]
        [PXDefault]
        [PXUIField(DisplayName = "Expense Item")]
        [PXSelector(typeof(InventoryItem.inventoryID), 
                    /* List of available/visible columns go here */
                    new Type[] { typeof(InventoryItem.inventoryCD), 
                                 typeof(InventoryItem.descr) }, 
                    SubstituteKey = typeof(InventoryItem.inventoryCD),
                    DescriptionField = typeof(InventoryItem.descr))]
        [PXRestrictor(typeof(Where<InventoryItem.itemType, Equal<INItemTypes.expenseItem>>), Messages.InventoryItemIsNotAnExpenseType)]
        protected virtual void EPExpenseClaimDetails_InventoryID_CacheAttached(PXCache sender)
        {
        }
    }
} 

在此处输入图像描述

于 2019-02-07T19:08:08.803 回答