Add in-memory report storage and async report handling
Introduced `InMemoryReportStorageWebExtension` to manage reports in memory, enabling dynamic report storage and retrieval. Updated `ReportViewer.razor` to conditionally render the `DxReportViewer` component and initialize reports asynchronously. Configured dependency injection in `Program.cs` to register `InMemoryReportStorageWebExtension` as a singleton and integrated it with `CustomReportProvider`. Registered `EnvelopeGenerator.ReceiverUI.PredefinedReports.Report` as a trusted class for deserialization. Enhanced `CustomReportProvider` to fetch reports from memory or generate them dynamically using `ReportsFactory`. Added necessary `using` directives and ensured proper report lifecycle management.
This commit is contained in:
@@ -1,12 +1,24 @@
|
||||
@page "/reportviewer/"
|
||||
@using DevExpress.XtraReports.UI;
|
||||
@using EnvelopeGenerator.ReceiverUI.Services;
|
||||
@inject InMemoryReportStorageWebExtension ReportStorage
|
||||
|
||||
<link href="_content/DevExpress.Blazor.Themes/blazing-berry.bs5.min.css" rel="stylesheet" />
|
||||
<link href="_content/DevExpress.Blazor.Reporting.Viewer/css/dx-blazor-reporting-components.bs5.css" rel="stylesheet" />
|
||||
|
||||
<DxReportViewer @ref="reportViewer" Report="Report" RootCssClasses="w-100 h-100" />
|
||||
@if(Report is not null) {
|
||||
<DxReportViewer @ref="reportViewer" Report="Report" RootCssClasses="w-100 h-100" />
|
||||
}
|
||||
|
||||
@code {
|
||||
DxReportViewer reportViewer;
|
||||
XtraReport Report = new PredefinedReports.Report();
|
||||
XtraReport? Report;
|
||||
|
||||
protected override async Task OnInitializedAsync() {
|
||||
Report = ReportStorage.TryGetReport("LargeDatasetReport", out var savedReport)
|
||||
? savedReport
|
||||
: PredefinedReports.ReportsFactory.GetReport("LargeDatasetReport");
|
||||
|
||||
await Task.CompletedTask;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user