Лучший способ передать данные из приложения angular для создания отчета telerik с помощью веб-сервисов telerik ?
Я пытаюсь отправить данные из приложения angular для отображения отчета telerik с помощью веб-сервисов telerik. Я смог сделать это с помощью пользовательского резольвера, но я ищу лучшее решение для достижения этой цели.
Что я уже пробовал:
Я создал сервис telerik rest для создания отчета на стороне сервера и последующего отображения его с помощью angular.
Ниже приведен код, который я использовал для создания контроллера отчетов и пользовательского преобразователя.
namespace TelerikReportingAngular.Controllers { using Newtonsoft.Json; using System; using System.Data; using System.Drawing; using System.IO; using System.Web; using System.Web.Http; using System.Web.Http.Cors; using Telerik.Reporting; using Telerik.Reporting.Cache.File; using Telerik.Reporting.Services; using Telerik.Reporting.Services.WebApi; using TelerikReportingAngular.Reports; //The class name determines the service URL. //ReportsController class name defines /api/report/ service URL. [EnableCors(origins: "*", headers: "*", methods: "*")] [Authorize] public class ReportsController : ReportsControllerBase { static ReportServiceConfiguration configurationInstance; static ReportsController() { //This is the folder that contains the report definitions //In this case this is the Reports folder var appPath = HttpContext.Current.Server.MapPath("~/"); var reportsPath = Path.Combine(appPath, "Reports"); //Add resolver for trdx/trdp report definitions, //then add resolver for class report definitions as fallback resolver; //finally create the resolver and use it in the ReportServiceConfiguration instance. var resolver = new ReportFileResolver(reportsPath) .AddFallbackResolver(new CustomReportResolver()); //Setup the ReportServiceConfiguration configurationInstance = new ReportServiceConfiguration { HostAppId = "Html5App", Storage = new FileStorage(), ReportResolver = resolver, // ReportSharingTimeout = 0, // ClientSessionTimeout = 15, }; } public ReportsController() { //Initialize the service configuration this.ReportServiceConfiguration = configurationInstance; } class CustomReportResolver : Telerik.Reporting.Services.Engine.IReportResolver { public Telerik.Reporting.ReportSource Resolve(string abc) { DataTable dt = (DataTable)JsonConvert.DeserializeObject(abc, (typeof(DataTable))); InstanceReportSource s = new InstanceReportSource(); s.ReportDocument = new Report1(dt); return s; } } } }
В угловых приложение для обмена мгновенными сообщениями с использованием HTML5 Viewer для передачи данных антивируса Avast, как показано ниже:
здесь gdata-это массив json, который будет отображаться в отчете Telerik на сервере.
<tr-viewer [containerStyle]="viewerContainerStyle" [serviceUrl]="'http://localhost:57441/api/Reports'" [authenticationToken]="token" [reportSource]="{ report: gdata, parameters:{user:'Amit'} }" [viewMode]="'Interactive'" [scaleMode]="'SPECIFIC'" [scale]="1.0"> </tr-viewer>
Все идет нормально. Но мое замешательство связано с подходом, который я использую для создания динамического отчета. Пожалуйста, предложите, является ли мой подход правильным или нет ?