Customization of an Action
public class BaseBLC : PXGraph<BaseBLC, DAC>
{
public PXSelect<DAC> Objects;
public PXAction<DAC> ValidateObjects;
[PXButton]
[PXUIField(DisplayName = "Validate Objects")]
protected virtual void validateObjects()
{
}
}
You can alter actions within BLC extensions in the following ways:
- By overriding action attributes within a BLC extension.To override action attributes in a BLC extension, you should declare both the BLC member of the PXAction type and the delegate. You should attach a new set of attributes to the action delegate. Also, you need to invoke the Press method on the base BLC action. Having redeclared the member of
PXAction<>
, you prevent the action delegate execution from an infinite loop. Consider the following example of a first-level BLC extension.public class BaseBLCExt : PXGraphExtension<BaseBLC> { public PXAction<DAC> ValidateObjects; [PXButton] [PXUIField(DisplayName = "Validate All Objects")] protected void validateObjects() { Base.ValidateObjects.Press(); } }
The Actions collection of a BLC instance contains the ValidateObjects action, which consists of the
PXAction
type member and the delegate, both of which were declared within the first-level extension (see the following figure).Note:When overriding an action delegate within a BLC extension, you completely redeclare the attributes attached to the action. Every action delegate must have PXButtonAttribute (or the derived attribute) and PXUIFieldAttribute attached.Figure 1. The interaction among the first-level and base actions
- By overriding the action delegate within the BLC extension. The new delegate is used by the appropriate action. Consider the following example of a second-level BLC extension.
public class BaseBLCExtOnExt : PXGraphExtension<BaseBLCExt, BaseBLC> { [PXButton] [PXUIField(DisplayName = "Validate Objects")] protected void validateObjects() { } }
The Actions collection of a BLC instance contains the ValidateObjects action, which consists of the
PXAction<>
type member declared within the first-level extension and the delegate declared within the second-level extension. To use an action declared within the base BLC or the lower-level extension from the action delegate, you should redeclare the action within a BLC extension. You do not need to redeclare an action when it is not meant to be used from the action delegate.Figure 2. The case when you don't need to redeclare an action
Note:To modify the same member of the base BLC or any BLC extension, you should use extensions of higher levels.