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.
24 lines
849 B
Plaintext
24 lines
849 B
Plaintext
@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" />
|
|
|
|
@if(Report is not null) {
|
|
<DxReportViewer @ref="reportViewer" Report="Report" RootCssClasses="w-100 h-100" />
|
|
}
|
|
|
|
@code {
|
|
DxReportViewer reportViewer;
|
|
XtraReport? Report;
|
|
|
|
protected override async Task OnInitializedAsync() {
|
|
Report = ReportStorage.TryGetReport("LargeDatasetReport", out var savedReport)
|
|
? savedReport
|
|
: PredefinedReports.ReportsFactory.GetReport("LargeDatasetReport");
|
|
|
|
await Task.CompletedTask;
|
|
}
|
|
} |