Skip to main content

Cache display methods in AX 2012

Display methods must be written at the table level

However, developers often write display or edit methods to perform some calculations and then bind them on form's controls to allow user to display or edit values in those bounded controls. 

Display/Edit methods create excessive client-server round trips and impact on product performance. And if there are  display methods added on the form it will make 5 client-server round trips, one for each method.

Options 1: CacheAddMethod
This issue can be addressed by using the CacheAddMethod on the FormDataSource. This method enables the form to calculate all of the display methods in single round trip to the server rather making individual calls.

Let's assume you have added edit method on ProjTable form to show some calcuated dates. Override init() method under ProjTable datasource and write following code;
public void init() {    super(); 
ProjTable_ds.cacheAddMethod(tableMethodStr(ProjTable, projectCompletedDate), false); }
Options 2: SysClientCacheDataMethodAttribute
AX2012 also allows to use SysClientCacheDataMethodAttribute attribute in the display method declaration. Then, forms should cache such methods automatically.
Attribute's constructor accept one optional parameter (_updateOnWrite), which corresponds to the second parameter of cacheAddMethod().
Example:
[SysClientCacheDataMethodAttribute(true)]
display DirPartyType type()
{...}
[SysClientCacheDataMethodAttribute] public display EcoResProductTitle title()
{    return inventTable.product().title(); }
Options 3: CacheDataMethod peoperty on Form's control
AX 2012 introduces a new feature called the Declarative Display caching. This allows you to enable caching by setting the form control property CacheDataMethod with either of three values; Yes, No and Auto

A lot more on this topic is here https://msdn.microsoft.com/en-us/library/aa596691.aspx

Happy Daxure!ing

Comments

  1. Hi, Can we use 'Display Method' with Caching on List Page...?

    ReplyDelete
    Replies
    1. Yes, Please have a look on HCMWorkerListPage. You will see it in init() method of first datasource.

      Delete

Post a Comment

I will appreciate your comments !

Popular posts from this blog

The Dual Write implementation - Part 1 - Understand and Setup

What is Dual-write? Tightly couples – complete at one transaction level Near real time Bi-directional Master data and business documents – Customer records you are creating and modifying and at this document we are talking about sales orders or quotes and invoice. Master data could be reference data e.g. customer groups and tax information Why Dual-write and why not Data Integrator? Data Integrator is Manual or Scheduled One directional Now, Let's deep dive and understand what is required for Dual-write setup and from where to start. First thing first, check you have access to https://make.powerapps.com/ Choose right environment of CDS (CE) Make sure you have access to the environment too, click on gear icon and Admin Center  Look for required environment and Open it, you must have access as going forward you are going to configure dual write steps in the environment user the same user you are logged in now. Now, go back to power platform admin center and...

D365O - How to add financial dimension in grid

This post outlines the steps; how to add financial dimensions (segmented control) in a grid in D365O. Let's assume we are adding new table and form for below explanation; New table contains two fields  AccountType and  LedgerDimension with relation to DimensionAttributeValueCombination table  Form looks like this; Set properties for segmented control under form design; - Auto declaration = Yes - Account type field = AccountType - Controller class = DimensionDynamicAccountController - Filter expression = %1 1. Override modified method for LedgerDimension field under form's datasource 2. Override lookup and checkUserCustomLookup method on ledger dimension segmented control in form desgin Datasource | D365O_FinancialDimension | LedgerDimension | modified [DataSource]     class D365O_FinancialDimension     { ...

D365FO: Entity cannot be deleted while dependent Entities for a processing group exist. Delete dependent Entities for a processing group and try again.

Scenario: There are times when you want to delete an entity from target entity list and when you do so, you face an error message which does not tell you where exactly the entity has been used.  "Entity cannot be deleted while dependent Entities for the processing group exist. Delete dependent Entities for a processing group and try again. " Solution: Browse the environment by appending this part  /?mi=SysTableBrowser&TableName=DMFDefinitionGroupEntity&cmp=USMF   at the end.  For example; if the environment URL is  https://daxture.sandbox.operations.dynamics.com then the complete URL will be https://daxture.sandbox.operations.dynamics.com/?mi=SysTableBrowser&TableName=DMFDefinitionGroupEntity&cmp=USMF Filter for Entity and it will give you the DefinitionGroup where the entity has been added or used in data management import/export projects. Get the DefinitionGroup name and search in the export/import projects under data management and either del...