Skip to main content

View Code Extensions

Views in D365 F&O support code extensions through augmentation classes using Chain of Command, just like tables. Since views inherit from Common, many of the same methods are available for wrapping.

Creating a View Extension Class

[ExtensionOf(tableStr(SAMOCustTransView))]
final class SAMOCustTransView_Extension
{
// Wrapped methods and new methods
}
note

Views use tableStr() (not viewStr()) in the [ExtensionOf] attribute because views are treated as table-like objects in the X++ type system.

Naming Convention

ElementPatternExample
Extension class<Prefix><ViewName>_ExtensionSAMOCustTransView_Extension

Methods That Can Be Wrapped

Views support a subset of table methods for CoC wrapping. Since views are typically read-only, data manipulation events are less common.

MethodDescription
validateWrite()Validate before write (if the view supports updates).
validateDelete()Validate before delete.
validateField(FieldId)Field-level validation.
modifiedField(FieldId)React to field changes.
initValue()Set default values.
postLoad()Post-load processing for computed display values.

Example: Adding Post-Load Logic

[ExtensionOf(tableStr(SAMOCustTransView))]
final class SAMOCustTransView_Extension
{
public void postLoad()
{
next postLoad();

// Populate a display field after load
this.SAMODisplayStatus = SAMOStatusHelper::getStatusText(this.Status);
}
}

Adding New Methods

[ExtensionOf(tableStr(SAMOCustTransView))]
final class SAMOCustTransView_Extension
{
public AmountCur SAMOCalculateBalance()
{
return this.AmountMST - this.SettleAmountMST;
}
}