Blazor
一个免费的开源 Web 框架,使开发人员能够使用 Microsoft 开发的 C# 和 HTML 创建 Web 应用。
20 个问题
你好,
是否可以在 Blazor Web 应用中调用 RDLC 报表,或者使用报表查看器加载 RDLC 报表?我在最新框架中没有看到报告选项。有人可以分享将 RDLC 报表与 .NET Blazor 框架集成的示例和资源吗?谢谢。
注意: 此问题总结整理于:在 Blazor Web 应用中集成 RDLC 报表
诚挚的问候
你好,
由于.rdlc 报表是基于.NET Framework 的,因此您可以在Windows平台中使用 RDLC, 不支持 Linux。 您可以按照我的步骤实现此要求: 第一步,创建 Blazor Web 应用程序和 Windows Forms 应用:
第二步,在 Windows Forms 应用中创建RDLC报表,并将其复制到 Blazor Web 应用程序:
第三步,单击 Report1.rdlc 文件 (1),然后右键单击 Parameters 文件夹以添加新的 Parameter()。然后右键单击空白区域以插入测试框:
然后将 ReportParameter1 拖到文本框中。这些步骤中的所有配置项都使用默认值,您可以直接单击“下一步”创建它们:
第四步,我在 Blazor Web App 中使用 Controller 来呈现数据:
Program.cs
using RDLC_BlazorWebApp.Components;
namespace RDLC_BlazorWebApp
{
public class Program
{
public static void Main(string[] args)
{
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddRazorComponents()
.AddInteractiveServerComponents();
// add this line
builder.Services.AddControllers();
var app = builder.Build();
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseAntiforgery();
app.MapRazorComponents<App>()
.AddInteractiveServerRenderMode();
// add this line
app.MapControllers();
app.Run();
}
}
}
Home控制器
using AspNetCore.Reporting;
using Microsoft.AspNetCore.Components.RenderTree;
using Microsoft.AspNetCore.Mvc;
namespace RDLC_BlazorWebApp.Controllers
{
[ApiController]
[Route("[controller]")]
public class HomeController : Controller
{
private readonly ILogger<HomeController> _logger;
private readonly IWebHostEnvironment _webHostEnvironment;
public HomeController(ILogger<HomeController> logger, IWebHostEnvironment webHostEnvironment)
{
_logger = logger;
this._webHostEnvironment = webHostEnvironment;
System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);
}
[HttpGet("print")]
public IActionResult Print() {
string mimetype = "";
int extension = 1;
var path = $"{this._webHostEnvironment.WebRootPath}\\Reports\\Report1.rdlc";
Dictionary<string,string> parameters = new Dictionary<string,string>();
parameters.Add("ReportParameter1", "RDLC in Blazor Web Application.");
LocalReport localReport = new LocalReport(path);
var result = localReport.Execute(RenderType.Pdf, extension,parameters,mimetype);
return File(result.MainStream,"application/pdf");
}
}
}
第五步(必须的),我的项目文件,注意安装的包:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
<ItemGroup>
<Content Remove="wwwroot\Reports\Report1.rdlc" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="wwwroot\Reports\Report1.rdlc">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<PackageReference Include="AspNetCore.Reporting" Version="2.1.0" />
<PackageReference Include="System.CodeDom" Version="8.0.0" />
<PackageReference Include="System.Drawing.Common" Version="8.0.0" />
<PackageReference Include="System.Security.Permissions" Version="8.0.0" />
<PackageReference Include="System.Text.Encoding.CodePages" Version="8.0.0" />
</ItemGroup>
</Project>
第六步,其他的:
<div class="top-row ps-3 navbar navbar-dark">
<div class="container-fluid">
<a class="navbar-brand" href="">RDLC_BlazorWebApp</a>
</div>
</div>
<input type="checkbox" title="Navigation menu" class="navbar-toggler" />
<div class="nav-scrollable" onclick="document.querySelector('.navbar-toggler').click()">
<nav class="flex-column">
<div class="nav-item px-3">
<NavLink class="nav-link" href="" Match="NavLinkMatch.All">
<span class="bi bi-house-door-fill-nav-menu" aria-hidden="true"></span> Home
</NavLink>
</div>
<div class="nav-item px-3">
<NavLink class="nav-link" href="counter">
<span class="bi bi-plus-square-fill-nav-menu" aria-hidden="true"></span> Counter
</NavLink>
</div>
<div class="nav-item px-3">
<NavLink class="nav-link" href="weather">
<span class="bi bi-list-nested-nav-menu" aria-hidden="true"></span> Weather
</NavLink>
</div>
<div class="nav-item px-3">
<NavLink class="nav-link" href="home/print">
<span class="bi bi-list-nested-nav-menu" aria-hidden="true"></span> RDLC
</NavLink>
</div>
</nav>
</div>
第七步,测试结果:
如果答案是正确的,请点击“接受答案”并点赞。 如果您对此答案还有其他疑问,请点击“评论”。 注意:如果您想接收相关电子邮件,请按照我们的文档中的步骤启用电子邮件通知 此线程的通知。