Incorporation de rapports dans vos applications Web ASP.NET Core

Ce didacticiel vous apprend à obtenir des rapports à partir d'un service REST de rapports Telerik et à les afficher dans les applications ASP.NET Core.
Ce billet de blog montre comment intégrer la visionneuse de rapports Telerik HTML5 (ou la visionneuse en abrégé) et hébergez le service REST Telerik Reporting (ou service en abrégé) dans votre application Web ASP.NET Core 3+. Voici les sujets que je vais aborder:
Qu'est-ce que la visionneuse de rapports HTML5?
Le but de la visionneuse est d'afficher les documents de rapport sur une page Web. Sous le capot, le visualiseur est un widget personnalisé basé sur jQuery. Les widgets sont des plugins riches en fonctionnalités et avec état qui ont un cycle de vie complet, ainsi que des méthodes et des événements. La mise en page de la visionneuse est stockée dans un modèle HTML qui prend en charge les navigateurs mobiles et de bureau et est entièrement personnalisable. Semblable aux widgets d'interface utilisateur de Kendo le modèle HTML par défaut de la visionneuse prend en charge thèmes prédéfinis et thèmes personnalisés .
Prenez l'eBook: Un guide rapide pour les rapports d'experts .NET Outils
Qu'est-ce que le service Reporting REST?
J'ai mentionné que le visualiseur affiche les documents de rapport. Un document de rapport, cependant, est la sortie du moteur de rapport.
Le visualiseur ne peut pas effectuer le traitement et le rendu en lui-même et c'est là que le service REST de rapports entre en jeu. Le service encapsule le moteur de rapports et expose ses fonctionnalités via HTTP, afin que le spectateur puisse y accéder. Un scénario courant pour l'interaction entre le spectateur et le service décrit dans un haut niveau d'abstraction serait be:
- Le visualiseur demande un document de rapport en fournissant l'identifiant unique de la définition de rapport (par exemple, le nom de fichier MyReport.trdx )
- Le service recherche la définition de rapport demandée et ordonne au rapport Moteur pour le traiter et le rendre dans un document de rapport HTML5
- Le service renvoie le résultat produit à la visionneuse
- La visionneuse affiche le document de rapport à l'utilisateur
Pour plus de commodité, le service peut également fournir tous les r ressources du widget de la visionneuse de rapports HTML5 équirées – Fichiers de modèle JavaScript, CSS et HTML.
Comment héberger le service REST de rapports dans votre application Web ASP.NET Core?
La visionneuse ne pouvant pas fonctionner sans le service, passons en revue le étapes pour héberger le service en premier. Pour cet article, je suppose que le projet affichant des rapports est également le projet de service. De cette façon, je n'ai pas à configurer le partage de ressources Cross-Origin (CORS). Cependant, si vous devez utiliser des projets séparés dans votre solution, voici un très bon article qui explique comment activer CORS dans ASP.NET Core .
Si vous n'avez pas d'ASP existant. NET Core, procédez comme suit pour en créer une:
- Démarrez Visual Studio 2019
- Ouvrez Fichier > Nouveau > Projet … [19659011] Sélectionnez Application Web ASP.NET Core et cliquez sur Suivant
- Saisissez votre Nom de projet et cliquez sur Créer
- Sélectionnez .NET Core et ASP.NET Core 3.1 pour la version du framework
- Sélectionnez le modèle Web Application et cliquez sur Create
] Pour héberger le service REST de rapports dans ce projet ou dans un autre projet existant, ajoutez le package NuGet Telerik.Reporting.Services.AspNetCore du Telerik NuGet feed a t https://nuget.telerik.com/nuget .
Le package de services ajoutera ses propres dépendances au projet, telles que Microsoft.AspNet.Core.Mvc.NewtonsoftJson . Pour activer la dépendance du package NewtonsoftJson ouvrez Startup.cs et remplacez la ligne services.AddRazorPages dans la méthode ConfigureServices par:
] services.AddRazorPages (). AddNewtonsoftJson ();
Juste en dessous de cette ligne, ajoutez le code de configuration pour une implémentation minimale de Reporting REST Service (ajoutez également les utilisations appropriées):
services.TryAddSingleton (
sp =>
nouveau
ReportServiceConfiguration
{
[19659002]
Storage =
new
FileStorage (),
ReportSourceResolver =
new
UriReportSourceResolver (
System.IO.Path.Combine (
sp.GetService (). ContentRootPath,
"Reports" [19659049]))
});
La configuration Storage ci-dessus spécifie que le service sauvegardera ses objets d'état internes et ses fichiers temporaires sur le système de fichiers. D'autres options de stockage sont également disponibles.
L'option ReportSourceResolver indique au service de rechercher les fichiers de définition de rapport dans le dossier d'application Reports . Pour plus de façons de résoudre un identifiant de rapport en une définition de rapport spécifique, vérifiez la référence complète du résolveur de source de rapport de service REST .
Le dossier Reports n'existe pas encore, mais vous ' Je vais le créer dans un instant car vous devrez y ajouter des fichiers de définition de rapport. J'ai récupéré ma définition de rapport ( Report Catalog.trdp ) dans le dossier d'installation de Telerik Reporting – C: Program Files (x86) Progress Telerik Reporting R2 2020 Report Designer Examples , mais vous pouvez en créer un nouveau à l'aide du Concepteur de rapports autonome . Une fois que vous avez une définition de rapport, vous devez l'ajouter à votre projet:
- Créez un dossier à la racine de votre projet appelé Reports
- Copiez-y votre fichier de définition de rapport
Aussi dans la méthode ConfigureServices assurez-vous que l'application est configurée pour les contrôleurs API en ajoutant:
services.AddControllers ();
Et mappez ces points de terminaison de contrôleur en ajoutant la ligne suivante ( endpoints .MapControllers ();
) à la méthode Configure :
app.UseEndpoints (endpoints =>
{
endpoints.MapRazorPages ();
endpoints.MapControllers ();
});
L'étape suivante consiste à créer la classe réelle ReportsController qui est l'essence de la s ervice:
- Ajoutez un nouveau dossier Controllers à la racine du projet
- Cliquez avec le bouton droit sur le dossier Controllers et sélectionnez Add > Controller …
- Sélectionnez le modèle API Controller – Empty et cliquez sur Add
- Nommez le nouveau contrôleur ReportsController.cs et cliquez sur Ajoutez
Remplacez le contenu du nouveau contrôleur par:
en utilisant
Microsoft.AspNetCore.Mvc;
en utilisant
Telerik. Reporting.Services;
using
Telerik.Reporting.Services.AspNetCore;
namespace
AspNetCoreReportViewerSample.Controllers
{
[Route(
"api / reports"
)]
[19659002]
public
class
ReportsController: ReportsControllerBase
{
public
ReportsController (IReportServiceConfiguration reportServiceConfiguration)
:
base
(reportService)
base
(reportService)
{
}
}
}
La chaîne api / reports à l'intérieur de l'attribut Route mappe l'URL qui sera utilisé pour accéder à ce contrôleur. Le service est maintenant prêt et en attente de servir vos rapports.
Il existe une variété d'autres options de configuration, y compris comment utiliser un fichier de configuration avec des chaînes de connexion, et plus encore. Pour approfondir le sujet, consultez la référence complète à la configuration d'un service REST de rapports .
Save Your Seat: Reporting en profondeur - Comment rationaliser la création de rapports avec facilité
Comment demander un rapport et l'afficher dans la visionneuse de rapports HTML5?
Avec le modèle de projet Web Application que je J'ai choisi plus tôt la page de destination de mon application est Pages / Index.cshtml . Cette page utilise une mise en page commune stockée dans Pages / Shared / _Layout.cshtml . La disposition commune a une référence à jQuery par défaut. Si votre application ne fait pas encore référence à jQuery, vous pouvez la lier à partir du jQuery CDN .
Pour avoir une organisation soignée de la page de mise en page commune, ajoutez une section personnalisée à l'élément head de _Layout.cshtml que vous utiliserez plus tard pour ajouter l'interface utilisateur Kendo du spectateur thèmes:
<
tête
>
...
@RenderSection ("Head", obligatoire: false)
</
head
> [19659107] Dans Pages / Index.cshtml vous avez besoin d'un élément div pour contenir le visualiseur. Cet élément doit avoir une valeur d'attribut unique id qui sera utilisée ultérieurement dans le JavaScript du visualiseur. Il est également nécessaire de définir les dimensions de l'élément div via un fichier CSS ou un style en ligne, sinon le visualiseur ne sera pas visible sur la page:
<
div
id
=
"reportViewer1"
style
=
"largeur: 940px; hauteur: 1300px"
>
</
div
]>
Ajoutez des liens vers le thème d'interface utilisateur Kendo souhaité dans la section personnalisée Head préparée précédemment:
Enfin, ajoutez un lien vers le fichier JavaScript du widget de visualisation dans un Scripts et appelez la méthode telerik_ReportViewer .
La section Scripts aidera à insérer le script du visualiseur après la référence à jQuery dans le fichier de mise en page commun. Le visualiseur pourra alors trouver sa dépendance jQuery et étendre l'instance d'objet jQuery globale avec la méthode telerik_ReportViewer .
telerik_ReportViewer est une méthode d'extension jQuery qui crée et configure le visualiseur objet. Dans cet exemple, l'objet visualiseur est créé à l'intérieur de l'élément # reportViewer1 div . serviceUrl correspond à l'URL de la route ReportsController et la valeur de l'option report est le nom de fichier de la définition de rapport:
@section Scripts {
]
<script src =
"/ api / reports / resources / js / telerikReportViewer"
>
<script type =
"text / javascript"
>
$ (document ) .ready (
function
() {
$ (
"# reportViewer1"
)
.telerik_ReportViewer ({
serviceUrl:
"api / reports"
reportSource: {
report:
"Report Catalog.trdp"
},
scaleMode: telerikReportViewer.ScaleModes.SPECIFIC,
[1945169035]
[1945169035] ] échelle: 1,0
});
});
}
Ci-dessus se trouve la configuration minimale requise de l'objet spectateur. Pour une liste complète des options de configuration, des méthodes et des événements, consultez la documentation de la visionneuse de rapports HTML5 .
Voici à quoi ressemble le Index.cshtml final:
@ page
@model IndexModel
@ {
ViewData ["Title"] = "Page d'accueil";
}
@section Head {
}
<
div
class
=
"text-center"
>
<
div
id
=
"reportViewer1"
style
=
"largeur: 940px; hauteur: 1300px"
>
</
div
>
</
div
>
@section Scripts {
<
script
src
=
"/ api / reports / resources / js / telerikReportViewer"
> </
script
>
<
script
type
=
"text / javascript"
>
$ (document) .ready (function () {
$ ("# reportViewer1")
.telerik_ReportViewer ({
serviceUrl: "api / reports",
[19659002]
reportSource: {
rapport: "Report Catalog.trdp"
},
[19659163] scaleMode: telerikReportViewer.ScaleModes.SPECIFIC,
scale: 1.0
}) ;
});
</
script
>
}
Il ne reste plus qu'à appuyer sur F5 dans Visual Studio et voir comment le visualiseur de rapports HTML5 demandera le catalogue de rapports . rapport trdp du service. Le service demandera au moteur de rapport de rendre la définition de rapport au format HTML5 et de la renvoyer à la visionneuse sous forme de document de rapport. Si tout se passe comme prévu, vous vous retrouverez à regarder un écran similaire:
Si vous rencontrez des problèmes, appuyez sur F12 pour rechercher des erreurs dans la console du navigateur et enregistrez le trafic réseau en utilisant Fiddler . Toutes ces informations seront extrêmement précieuses si vous décidez de contactez notre équipe d'assistance légendaire .
Vous pouvez télécharger l'exemple d'application à partir du référentiel GitHub telerik / reporting-samples .
Tried Telerik DevCraft?
Vous pouvez choisir Telerik Reporting et Telerik Report Server en tant que produits individuels ou profitez-en dans le cadre des offres groupées Telerik DevCraft.
Telerik DevCraft est la meilleure collection d'outils de développement logiciel parmi les technologies .NET et JavaScript, qui comprend des composants d'interface utilisateur modernes, riches en fonctionnalités et conçus par des professionnels pour les applications Web, de bureau et mobiles, des solutions de gestion de rapports et de rapports, des bibliothèques de traitement de documents, des tests automatisés et des simulations outils des suites Telerik et Kendo UI. DevCraft vous fournira tout ce dont vous avez besoin pour fournir des applications exceptionnelles en moins de temps et avec moins d'efforts. Avec le soutien de notre équipe de support légendaire, qui se compose des développeurs qui créent les produits, et une tonne de ressources et de formations, vous pouvez être assuré que vous avez un partenaire stable sur lequel compter pour vos défis quotidiens tout au long de votre parcours de développement logiciel. [19659272]
Source link