جهت تولید گزارش در Blazor Wasm، ابتدا آخرین نسخهی استیمول سافت را از نیوگت دریافت کرده:
سپس گزارشی را که با DataSource از نوع Business Objects ساختهایم، در مسیر wwwroot/Reports قرار میدهیم. انتخاب نوع دیتاسورس اختیاری است و میتوانیم از سایر دیتاسورسها نیز استفاده کنیم.
جهت دسترسی به فایل گزارش، نیاز است فایل ریپورت، تبدیل به آرایهای از بایتها شود. به همین دلیل در Web Api یک متد را ساخته و در این متد، فایل گزارش را به آرایه تبدیل میکنیم:
و سپس در فایل Razor بوسیله HttpClient گزارش را نمایش میدهیم:
کدهای کامل این مطلب را از اینجا میتوانید دریافت کنید: BlazorWasmReport.zip
Install-Package Stimulsoft.Reports.Blazor -Version 2021.2.4
جهت دسترسی به فایل گزارش، نیاز است فایل ریپورت، تبدیل به آرایهای از بایتها شود. به همین دلیل در Web Api یک متد را ساخته و در این متد، فایل گزارش را به آرایه تبدیل میکنیم:
[HttpGet] [Route("GetReportFile/{fileName}")] public async Task<IActionResult> GetReportFile(string fileName) { var rootPath = _webHostEnverioment.WebRootFileProvider.GetDirectoryContents("/") .FirstOrDefault(x => x.Name == "Reports")?.PhysicalPath; var path = Path.Combine(rootPath!, fileName); var bytes = await System.IO.File.ReadAllBytesAsync(path); return Ok(bytes); }
@page "/" @using Stimulsoft.Base @using Stimulsoft.Report @using Stimulsoft.Report.Blazor @inject HttpClient Http <StiBlazorViewer Report="@report" /> @code { private StiReport report; protected override async Task OnInitializedAsync() { //Create empty report object report = new StiReport(); //Load report template // var reportBytes = await Http.GetByteArrayAsync("Reports/Report.mrt"); report.RegBusinessObject("MyList", GetBusinessObject()); var uri = $"/api/Report/GetReportFile/Report.mrt"; var reportFile=await Http.GetFromJsonAsync<byte[]>(uri); // var reportFile = await Http.GetByteArrayAsync("Report.mrt"); report.Load(reportFile); await report.Dictionary.SynchronizeAsync(); } public class BusinessEntity { public string Name { get; set; } public string Alias { get; set; } public BusinessEntity(string name, string alias) { Name = name; Alias = alias; } } private System.Collections.ArrayList GetBusinessObject() { var list = new System.Collections.ArrayList(); list.Add(new BusinessEntity("ali", "alias1")); list.Add(new BusinessEntity("reza", "alias2")); return list; } }
کدهای کامل این مطلب را از اینجا میتوانید دریافت کنید: BlazorWasmReport.zip