我可能看起来很迷茫,但我觉得我的代码是正确的,但它不起作用。我实现了自己的PXStringListAttribute,因此删除了现有PXStringListAttribute的基本属性,但它似乎无法正常工作。
[PXRemoveBaseAttribute(typeof(ActivityStatusListAttribute))]
[CustomStatusApproval]
[PXUIField(DisplayName="test")]
protected virtual void CRActivity_TimeActivity_ApprovalStatus_CacheAttached(PXCache cache)
{
}
您尝试自定义的字段是PMTimeActivity.ApprovalStatus,因此您的缓存附加方法名称未指向正确的引用以覆盖属性。
查看字段的属性,您可以看到应该使用的dac和字段:
这导致缓存附加的方法名称为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)
{
}
}