Today I found an interesting thing with regards to
AX tables and this post is all about this new experience which is the PostLoad()
method in AX tables.
When we create a new table in AOT, Morphx
automatically creates a series of methods for it. We cannot see those methods
but those can be overriden on each table as per requirements. PostLoad() is one
of these system methods. List of all system methods can be seen from
Lets create a new table, I named it PostLoadTable
with two fields Name and Value.
I added 5 records in the table manually (open table
and added).
Tables in Microsoft Dynamics AX have a number of
system-defined methods, such as insert, validateField,validateWrite.
For a list of these methods, see the xRecord system class. The xRecord class
can be seen as the base class for the Common table. The Common table
can be seen as the base table for all tables.
In any table class, the body of each system-defined method
contains only a call to super(). When you edit the X++ code in a table
method, you override the parent's implementation of that method. Usually the
call to super() must remain in the methods that you edit.
PostLoad() is the method that is used to read
records from database and you can perform any custom logic by overriding this
method on any table.
Let’s override this method and play around it
public void postLoad()
{
super();
if (this.Name == 'MEL')
this.Value = 5;
}
By opening table again it shows me different result
as compared to what we entered earlier as shown above.
Value for name MEL changes from 1 to 5 and I did
not require to call update method.
There are many existing implementation of postLoad method in AX tables, I am listing few of them here for ease.
HCMWorkerTable\postLoad()
VendTrans\PostLoad()
CustTrans\PostLoad()
Nice :) .. Thanks for sharing
ReplyDelete