Het bericht van vandaag is een shorty maar een goody! Het is een snelle oplossing die hopelijk voor u van pas zal komen. Genieten!

Onze ervaring is dat het niet ongebruikelijk is bij het schrijven van aangepaste logica voor een entiteitsvorm dat we actie moeten ondernemen wanneer de inhoud van een subraster wordt gewijzigd. De Client API biedt de 'addOnLoad'-methode van het GridControl-object voor precies zo'n geval. Met 'addOnLoad' kunnen we een luisterfunctie toewijzen die moet worden uitgevoerd wanneer het subnet wordt geladen (of opnieuw wordt geladen door een bewerking, zoals Toevoegen). Deze methode werkt op dezelfde manier als een vanille JavaScript-gebeurtenislistener en geeft de listenerfunctie de uitvoeringscontext door als de eerste parameter.

Klopt, toch? De gotcha komt wanneer je de 'addOnLoad'-methode probeert aan te roepen om de binding toe te passen. Als uw aangepaste logica wordt uitgevoerd voordat het formulier volledig is weergegeven, kan de browser JavaScript-engine een 'Object Undefined'-fout veroorzaken. Dit gebeurt omdat onze code probeert toegang te krijgen tot het GridControl-object voordat het beschikbaar is.

Om dit te verhelpen, verpak je gewoon de code die de binding toepast in een lusconstructie om te "wachten" tot het GridControl-object beschikbaar komt. Zoals deze (zie onderstaande tekst):

var globalFormContext; function myFormOnload (executionContext) {var globalFormContext = executionContext.getFormContext (); addSubgridEventListener (); } functie addSubgridEventListener () {var gridContext = globalFormContext.getControl ("SUBGRIDNAME"); // zorg ervoor dat de subgrid gereed is ... zo niet wacht en roep deze functie opnieuw aan als (gridContext == null) {setTimeout (function () {addSubgridEventListener ();}, 500); terug te keren; } // bind de gebeurtenislistener wanneer de subgrid gereed is gridContext.addOnLoad (subgridEventListener); } functie subgridEventListener (context) {console.log ('Actie ondernemen op Subgrid hier laden / opnieuw laden'); }

Geloof het of niet, dat is het! Het is zo'n eenvoudige oplossing - maar ook een enorme hulp. Hopelijk komt dit u van pas. Zorg dat je Abonneer je op onze blog voor meer tips en trucs.

Fijne D365'ing!

Avatar voor Joe D365

Joe D365

Joe D365 is een Microsoft Dynamics 365 superheld die op pure Dynamics adrenaline draait. Als het gezicht van PowerObjects, is de missie van Joe D365 om innovatieve manieren te onthullen om Dynamics 365 te gebruiken en de toepassing naar meer bedrijven en organisaties over de hele wereld te brengen.