我想为所有用户隐藏“费用收据”屏幕(EP301020)上““费用项目””查找屏幕中的列(库存ID和描述除外)。
如何在默认情况下为所有用户在“列配置”的“可用列”部分中设置某些列(不需要的列),并且在查找屏幕中仅提供必需的列。默认情况下,所有这些列包含在“列配置”中的选定列列表中。 请指教。 谢谢
答案 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)
{
}
}
}