Il est ainsi possible de définir une méthode "display" sur une table, avec la syntaxe suivante :
display str MyDisplayMethod()Cette méthode peut alors être utilisée dans une grid dont le datasource est la table contenant notre méthode "display".
{
return "Ma méthode display";
}
Rapidement se pose alors un problème de performance. En effet, les grid sous AX étant ce qu'elles sont, on ne peut pas dire que l'optimisation de l'affichage soit leur point fort. L'utilisation des méthodes "display" (pour peu qu'elles contiennent des accès à la base) devient vite problématique du fait de lenteur insoutenables de la grid.
Pour remédier à cela, il est possible de mettre en cache une méthode display. Sur votre form, placez vous sur le datasource mappé sur votre datatable. Il vous suffit d'overrider la méthode "init" du datasource, ainsi :
public void init()
{
super();
this.cacheAddMethod(tablemethodstr(MyDataTable, MyDisplayMethod ));
}
Vous noterez alors une très nette accélération de l'affichage de la grid.
vous trouvez ici un peu plus de détails sur la méthode de mise en cache.