为什么我的Overriden字段没有在CRActivityMaint上生效

问题描述 投票:0回答:1

我可能看起来很迷茫,但我觉得我的代码是正确的,但它不起作用。我实现了自己的PXStringListAttribute,因此删除了现有PXStringListAttribute的基本属性,但它似乎无法正常工作。

[PXRemoveBaseAttribute(typeof(ActivityStatusListAttribute))]
[CustomStatusApproval]
[PXUIField(DisplayName="test")]
protected virtual void CRActivity_TimeActivity_ApprovalStatus_CacheAttached(PXCache cache)
{

}

enter image description here

acumatica
1个回答
1
投票

您尝试自定义的字段是PMTimeActivity.ApprovalStatus,因此您的缓存附加方法名称未指向正确的引用以覆盖属性。

查看字段的属性,您可以看到应该使用的dac和字段:

enter image description here

这导致缓存附加的方法名称为PMTimeActivity_ApprovalStatus_CacheAttached(使用DataClass_DataField_CacheAttached的命名约定)

这是一个工作示例:

public class CRActivityMaintExtension : PXGraphExtension<PX.Objects.EP.CRActivityMaint>
{
    [PXRemoveBaseAttribute(typeof(PX.Objects.CR.ActivityStatusListAttribute))]
    [PXStringList(new[]
            {
                PX.Objects.CR.ActivityStatusListAttribute.Draft,
                PX.Objects.CR.ActivityStatusListAttribute.Open,
                PX.Objects.CR.ActivityStatusListAttribute.InProcess,
                PX.Objects.CR.ActivityStatusListAttribute.Completed,
                PX.Objects.CR.ActivityStatusListAttribute.Approved,
                PX.Objects.CR.ActivityStatusListAttribute.Rejected,
                PX.Objects.CR.ActivityStatusListAttribute.Canceled,
                PX.Objects.CR.ActivityStatusListAttribute.PendingApproval,
                PX.Objects.CR.ActivityStatusListAttribute.Released,
                "T1",
                "T2"
            },
            new[]
            {
                PX.Objects.EP.Messages.Draft,
                PX.Objects.EP.Messages.Open,
                PX.Objects.EP.Messages.InProcess,
                PX.Objects.EP.Messages.Completed,
                PX.Objects.EP.Messages.Approved,
                PX.Objects.EP.Messages.Rejected,
                PX.Objects.EP.Messages.Canceled,
                PX.Objects.EP.Messages.Balanced,
                PX.Objects.EP.Messages.Released,
                "TEST1",
                "TEST2"
            })]
    [PXUIField(DisplayName = "Some Test")]
    protected virtual void PMTimeActivity_ApprovalStatus_CacheAttached(PXCache cache)
    {

    }
}

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.