如何更改PXSelector字段之一的显示名称

时间:2018-08-27 13:45:37

标签: acumatica

我需要将BAccount.acctName字段的显示名称更改为“ Primary Vendor”,这是在我创建的PXSelector中显示的最后一个字段。 我尝试创建一个可以解决问题的扩展名,但是此选项还会将该字段重命名为另一个查询页面,因此我无法使用它。

以下是我的代码:

选择器

[PXNonInstantiatedExtension]
public class SO_SOLine_ExistingColumn : 
PXCacheExtension<PX.Objects.SO.SOLine>
{
    #region InventoryID 
    [PXMergeAttributes(Method = 
    MergeMethod.Append)]

[PXSelector(typeof(Search2<InventoryItem.inventoryCD, 
            LeftJoin<BAccount, On<BAccount.bAccountID, 
                Equal<InventoryItem.preferredVendorID>>>,
        Where<InventoryItem.descr, IsNotNull>>),
        typeof(InventoryItem.inventoryID),
        typeof(InventoryItem.inventoryCD),
        typeof(InventoryItem.descr),
        typeof(InventoryItem.postClassID),
        typeof(InventoryItem.itemStatus),
        typeof(InventoryItem.itemType),
        typeof(InventoryItem.baseUnit),
        typeof(InventoryItem.salesUnit),
        typeof(InventoryItem.purchaseUnit),
        typeof(InventoryItem.basePrice),
        typeof(BAccount.acctName), ValidateValue = false) ]

        public int? InventoryID { get; set; }
        #endregion
}

字段扩展

public class BAccountExt : PXCacheExtension<PX.Objects.CR.BAccount>
{

    #region UsrCustomField
    [PXDBString(250, IsUnicode = true, BqlField = 
    typeof(BAccountR.acctName))]
    [PXUIField(DisplayName = "Primary Vendor")]
    public virtual string AcctName { get; set; }
    public abstract class acctName : IBqlField
    {
    }
    #endregion

}

2 个答案:

答案 0 :(得分:2)

您发现缓存扩展修改适用于使用该DAC的所有屏幕。在每个图的基础上还有另一种扩展机制,称为CacheAttached,在缓存扩展之后应用。

要首先使用它,您需要确定要定制的屏幕图形和要修改的DAC字段。您可以为此使用检查元素功能。在此示例中,“客户”屏幕的图形为“ CustomerMaint”,而DAC字段为“ Customer.acctName”: enter image description here

一旦有了这些信息,就可以为该图创建扩展,并扩展其中的DAC字段。使用CacheAttached方法在图形中定义的DAC字段扩展仅适用于使用该图形的屏幕:

public class CustomerMaint_Extension : PXGraphExtension<CustomerMaint>
{
    [PXMergeAttributes(Method = MergeMethod.Merge)]
    [PXUIField(DisplayName = "Display Name For Customers Graph")]
    public virtual void Customer_AcctName_CacheAttached(PXCache sender) 
    {
    }
}

CacheAttached扩展的原型约定为:

void DAC_DACField_CacheAttached(PXCache sender) { }

您将DAC和DACField更改为您要定位的字段。方法定义(正文)应保留为空。装饰CacheAttached方法的属性将应用于您正在自定义的字段。使用属性PXMerge,您可以调整CacheAttached扩展的应用方式,它允许将扩展的字段新属性与基础属性合并,或者完全替换基础属性。

有关更多详细信息,请参见此博客文章:

http://asiablog.acumatica.com/2017/01/append-and-replace-of-dacs-attributes.html

答案 1 :(得分:0)

您也可以尝试如下所示,但这仅限于特定的图表。

  public class CustomerMaint_Extension : PXGraphExtension<CustomerMaint>
  {
     public override void Initialize()
    {
      PXUIFieldAttribute.SetDisplayName<Customer.acctName>(Base.BAccount.Cache, "Primary Vendor");
    }
  }