我需要将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
}
答案 0 :(得分:2)
您发现缓存扩展修改适用于使用该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
答案 1 :(得分:0)
您也可以尝试如下所示,但这仅限于特定的图表。
public class CustomerMaint_Extension : PXGraphExtension<CustomerMaint>
{
public override void Initialize()
{
PXUIFieldAttribute.SetDisplayName<Customer.acctName>(Base.BAccount.Cache, "Primary Vendor");
}
}