Почему мое переопределенное поле не вступает в силу, на CRActivityMaint - PullRequest
0 голосов
/ 16 апреля 2019

Может показаться потерянным, но я чувствую, что мой код правильный, но он не работает.Я реализовал свой собственный PXStringListAttribute, тем самым удалив базовый атрибут существующего PXStringListAttribute, но он, похоже, не работает.

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

}

enter image description here

1 Ответ

1 голос
/ 16 апреля 2019

Поле, которое вы пытаетесь настроить, - это 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

...