随着现代技术的高速发展,相关产业所衍生出来的数据集是越来越庞大。那么我们如何能够简单、方便、快捷的展现自己输入数据?并且能够以我们想要的方式展现出来?报表——这一产物便应运而生,现在市面上流行的报表工具类产品也是层出不穷。
第三方报表工具是数据库存储,数据库程序通常可以存放的数据量是相当大的,可以处理非常复杂的数据结构关系。报表数据交互也快捷方便,速度也非常快,可视化交互渲染。
本文介绍如何在单页应用程序Angular 7中使用FastReport Core Web报表?
Node.js安装
如何创建应用程序?
dotnet new angular -o AngularFRCore
如您所知,AngularFRCore是项目的名称。创建应用程序后,您需要安装typescript库。我们将使用 Node.js npm平台库安装程序执行此操作。在控制台执行了创建应用程序的命令,在应用程序目录中运行另一个命令:
npm install -g typescript
现在,打开项目,没有解决方案文件,它将在您第一次启动项目时创建。
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{ …
app.UseFastReport();
…}
如果您浏览项目树,可以从MVC应用程序中看到我们熟悉的控制器和模型目录。可以使用几乎未改变 的MVC .Net Core应用程序作为后端。Controllers文件夹中已有一个 - SampleDataController。随意清除课程内容 - 我们将创建 自己的方法:
[HttpGet("[action]")]
public IActionResult ShowReport(string name)
{ WebReport WebReport = new WebReport();
WebReport.Width = “1000”;
WebReport.Height = “1000”;
WebReport.Report.Load(String.Format(“App_Data/{0}.frx”, name));
// Load the report into the WebReport object System.Data.DataSet dataSet = new System.Data.DataSet();
// Create a data source dataSet.ReadXml(“App_Data/nwind.xml”);
// Open the xml database WebReport.Report.RegisterData(dataSet, “NorthWind”);
// Registering the data source in the report ViewBag.WebReport = WebReport;
// pass the report to View return View();
}
如果您已经熟悉FastReport.Core,那么此方法没有任何新内容。我们创建了Web报表对象,将报表 模板加载到其中,创建并注册了数据源并将报表传递给视图。此方法有一个参数 - 我们用于加载所需报表模板的报表的名称。
@await ViewBag.WebReport.Render()
在异步模式下,我们正在等待生成报表的HTML版本。
import { Component } from ‘@angular/core’;
@Component(
{ selector: ‘app-root’,
templateUrl: ‘./app.component.html’,
styleUrls: [’./app.component.css’]})
export class AppComponent
{ title = ‘app’;
show: boolean = false;
url: string; report: string;
Clicked()
{ if (this.report != null)
{ this.show = true;
this.url = “api/SampleData/ShowReport?name=” + this.report;
} }}
以下是我们在页面模板中看到的show和url变量。以及变量报表,其中包含所选报表的名称。 Clicked()函数将show变量设置为true,并在url变量中设置报表的路径。
import { Pipe, PipeTransform } from ‘@angular/core’;
import { DomSanitizer } from ‘@angular/platform-browser’;
@Pipe({ name: ‘safeUrl’ })
export class SafeUrlPipe implements PipeTransform {
constructor(private sanitizer: DomSanitizer) { }
transform(url) {
return this.sanitizer.bypassSecurityTrustResourceUrl(url);
}}
要在页面模板中使用此函数,请在app.module.ts中添加此管道模块的声明:
import { BrowserModule } from ‘@angular/platform-browser’;
import { NgModule } from ‘@angular/core’;
import { FormsModule } from ‘@angular/forms’;
import { HttpClientModule } from ‘@angular/common/http’;
import { RouterModule } from ‘@angular/router’;
import { SafeUrlPipe } from “./safeUrl.pipe”;
import { AppComponent } from ‘./app.component’;
@NgModule({
declarations: [
AppComponent,
SafeUrlPipe
],
imports: [
BrowserModule.withServerTransition({ appId: ‘ng-cli-universal’ }),
HttpClientModule,
FormsModule
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
这样就完成了演示应用程序的工作。运行应用程序:
首先,您需要选择其中一个报表,然后单击按钮:
现在选择另一个报表并单击按钮:
因此,您已经看到在Angular单页面应用程序中使用FastReport.Core报告生成器并不比通常的ASP .Net Core应用程序困难得多 。
如果您对 FastReport 报表工具感兴趣,欢迎加入 FastReport QQ 交流群:702295239