列配置中所有用户的隐藏列

时间:2019-02-07 11:59:47

标签: acumatica acumatica-kb

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

如何在默认情况下为所有用户在“列配置”的“可用列”部分中设置某些列(不需要的列),并且在查找屏幕中仅提供必需的列。默认情况下,所有这些列包含在“列配置”中的选定列列表中。 请指教。 谢谢

1 个答案:

答案 0 :(得分:1)

以下是用于隐藏“可用”和“选定”列表框中的列的代码。如果您只需要初始化Available and Selected列表框中的列,请考虑使用Acumatica Default Table Layout功能。请注意,列配置是用户配置,因此您可以初始化列,但是初始化后不能覆盖用户的选择。


要从选择器中完全删除列,您需要重新定义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)
        {
        }
    }
} 

enter image description here