【问题标题】:How to change the Display Name for one of the PXSelector fields如何更改 PXSelector 字段之一的显示名称
【发布时间】:2018-08-28 18:17:16
【问题描述】:

我需要将 BAccount.acctName 字段的显示名称更改为“主要供应商”,这是我创建的 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

}

【问题讨论】:

    标签: acumatica


    【解决方案1】:

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

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

    获得该信息后,您可以为该图创建扩展并扩展其中的 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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-09
        • 1970-01-01
        相关资源
        最近更新 更多