Ontwikkeling van aangepaste rapporttoepassingen met de SSRS Report Viewer-servercomponent is tegenwoordig nog steeds een veel voorkomende praktijk. De SSRS Report Viewer kan in een extern gehoste webapplicatie worden geplaatst voor weergave in een iframe of een dashboard in Dynamics 365 voor SSRS-stijl rapportage met drilldowns naar subrapporten, enz. Bij het combineren van verschillende technologieën om een ​​bepaald functioneel doel te bereiken, daar zijn soms onverwachte "gotcha's" die opduiken, die onverwachte tijd en moeite vergen om je hoofd om je heen te wikkelen en een resolutie te bereiken. In de post van vandaag behandelen we een dergelijke "gotcha" die we onlangs hebben ontdekt tijdens het werken met jQuery en de SSRS Report Viewer in een rapportage-indeling met tabbladen.

ssrs

Ons doel was om drie afzonderlijke SSRS Report Viewer-besturingselementen weer te geven in een jQuery-tabbesturingselement in een dashboard in Dynamics 365. Bij het openen van het dashboard in Dynamics 365 gebruikten de jQuery-tabbladen asynchrone weergave om elk van hun SSRS Report Viewer-besturingselementen met verschillende rapporten te laden. De parameters voor de drie rapporten waren vooraf bepaald en statisch in de SSRS-rapporten op basis van datumbereiken. Terwijl alle drie laden, wordt tabindex nul eerst weergegeven, terwijl de andere twee tabbladen in feite div-tags zijn die op de pagina zijn verborgen.

Bij het heen en weer schakelen tussen de jQuery-tabbladen en het boren in de subrapporten, zou de SSRS Report Viewer-werkbalk op elk van de SSRS Report Viewer-besturingselementen uiteindelijk verdwijnen en zou u vast blijven zitten in een subrapport zonder dat u terug kunt navigeren naar het ouderrapport. Uiteindelijk kwamen alle drie de tabbladen en rapportviewers in deze status terecht! Dit was duidelijk niet goed voor de eindgebruikerservaring. Het probleem is gekoppeld aan het gedrag (of een bug) in het besturingselement Report viewer en treedt op bij het verbergen en weergeven van de div die het SSRS Report Viewer-besturingselement inpakt, zoals wat er gebeurt met jQuery-tabbladen. Na veel debuggen met de browserontwikkelaarstools en onderzoek op Microsoft en jQuery-forums en blogs, was er nog geen oplossing te vinden.

Een paar ouderwetse "mouwen oprollen" en graven in de SSRS-besturing zelf bracht ons ertoe de "RecalculateLayout ()" -methode in de besturing te ontdekken. Door een eenvoudige Java-scriptfunctieaanroep te plaatsen op de gebeurtenis 'onclick' van elk van de jQuery-tabbladen, wordt het SSRS Report Viewer-besturingselement op de zijpagina van de client geplaatst en wordt vervolgens deze methode opgeroepen, de controle vernieuwd en de verloren (of binnenkort verloren) herladen SSRS Rapportviewer werkbalk. Dit is niet nodig als u slechts één SSRS Report Viewer-besturingselement of zelfs meerdere SSRS-besturingselementen op een webpagina gebruikt als u geen jQuery-tabbladbesturingselement of iets anders gebruikt dat de div-tags verbergt waarin de besturingselementen zijn ingepakt .

We hopen dat u deze oplossing voor een gemeenschappelijke "gotcha" nuttig vond. Vergeet niet te doen Abonneer je op onze blog voor meer handige tips en trucs.

Zoals altijd, gelukkig Dynamics 365'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.