Overview of Blazor Reporting Components
- 3 minutes to read
Use the following DevExpress reporting components to view and design reports in Blazor applications:
- DxReportViewer
- A native Blazor component.
- DxDocumentViewer, DxReportDesigner, and DxReportParametersPanel
- Wrappers based on JavaScript components. These components support document generation on a client or server.
- DxWasmDocumentViewer, DxWasmReportDesigner, and DxWasmReportParametersPanel
- Wrappers based on JavaScript components. These components support document generation on the server only.
The following sections compare these components and choose the best fit for your application.
General Overview
The table below gives a general overview of Blazor Reporting components:
| DxReportViewer | DxDocumentViewer DxReportDesigner DxReportParametersPanel |
DxWasmDocumentViewer DxWasmReportDesigner DxWasmReportParametersPanel |
|
|---|---|---|---|
| Type | Native | JavaScript-based | JavaScript-based |
| UI Technology | Blazor Components | DevExtreme JavaScript Widgets | DevExtreme JavaScript Widgets |
| Requires an ASP.NET Core Backend | ❌ | ❌ | ✅ |
| Requires MVC Controllers | ❌ | ❌ | ✅ |
| Communication Mechanism | SignalR[1] | SignalR[1] | fetch[2] |
| Report Generation[3] | Client / Server | Client / Server | Server only |
| Requires Report Name Resolution[4] | ❌ | ✅ | ✅ |
Render Modes
The table below summarizes the support of Blazor render modes by Blazor Reporting components:
| Static | Interactive Server | Interactive WebAssembly | Interactive Auto | |
|---|---|---|---|---|
| DxReportViewer | ❌ | ✅ | ✅ | Not officially supported. |
| DxDocumentViewer DxReportDesigner DxReportParametersPanel |
❌ | ✅ (Generation on the server) | ✅ (Generation on the client) | Provides no benefits. |
| DxWasmDocumentViewer DxWasmReportDesigner DxWasmReportParametersPanel |
❌ | ❌ | ✅ (Generation on the server) | Provides no benefits. |
The table below compares client-side and server-side report generation:
| Render location | Pros | Cons |
|---|---|---|
| Client | • Excellent scalability. CPU and memory work are offloaded to the client machine. | • Slower initial load (WebAssembly binaries). • Security concerns (data exposed to client). • Single-threaded performance limitations. |
| Server | • Full control of report generation. • Better security. • No client hardware dependency. |
• Requires server scaling. • Higher server resource consumption. |
Reporting components require interactive execution and cannot run in static render mode because they rely on runtime report generation and user interaction.
For information on render modes, refer to the following article: ASP.NET Core Blazor render modes.
Functionality Comparison
| Aspect | JavaScript-based Components | Native Components (DxReportViewer) |
|---|---|---|
| UI Technology | DevExtreme JavaScript Widgets | DevExpress Blazor Components |
| UI Customization | JavaScript | C# |
| Right-to-Left Support (UI)[5] | Yes | No |
| Localization | Satellite Assemblies or JSON Files | Satellite Assemblies |
Known Limitations in DxReportViewer
- XRPdfSignature and XRPictureBox controls are not editable.
- Fullscreen toolbar command is not supported out of the box.
WebAssembly Standalone Specifics
- Data Sources
In Blazor WebAssembly Standalone applications, only JSON and Object data sources are currently supported.
For information on data source support in reports, refer to the following help topic: Bind Reports to Data.
- Script Support
- Scripts are not supported in Blazor WebAssembly applications.
-
SignalR provides stateful, real-time communication and requires persistent connections and sticky sessions. For more information, refer to the following article: Overview of ASP.NET Core SignalR.
-
HTTP-based communication using fetch is stateless and scales more easily, but requires explicit backend endpoints and does not support real-time updates. For more information, refer to the following article: Fetch API.
-
The location of document generation depends on the render mode/hosting model.
-
A service or a group of services that translates a report name to a report instance. For more information, refer to the following help topic: Report Name Resolution Services.
-
Report layout and controls support RTL. For additional information, refer to the following help topic: Right-To-Left Support.