1. 程式人生 > 其它 >如何在 React 應用程式中使用 FastCube.Net?

如何在 React 應用程式中使用 FastCube.Net?

FastCube使您能夠分析資料並構建彙總表(資料切片),以及輕鬆、即時地建立各種報表和圖表。它是高效分析資料陣列的便利工具。ReactJs 庫已廣泛用於單頁應用程式的 Web 開發。之前我們已經介紹瞭如何在 React SPA 應用程式中顯示報告和線上報告設計器。現在可以在網頁上顯示來自 FastCube.Core 的多維資料集和資料切片。讓我們考慮如何做到這一點。

立即點選獲取FastCube.Net 2021最新安裝包

要使用 React 前端部分建立 ASP .Net Core 應用程式,您可以使用 .Net SDK 中的模板。在命令列中執行:

dotnet new react -o MyReactApp

此命令將建立一個演示應用程式,我們可以使用它來顯示多維資料集。當然,為此,您必須安裝 .NET Core SDK。此外,該應用程式將需要 Node.js。

轉到建立的應用程式的目錄:

cd MyReactApp

並使用以下命令安裝 javascript 包:

npm install

讓我們開始使用建立的 Web 應用程式。首先,讓我們安裝 FastCube 軟體包。開啟 Nuget 包管理器。在視窗的右上角,你會看到一個齒輪圖示,它開啟包源的設定。單擊它並新增一個新的包源,一個包含我們 FastCube 包的資料夾,位於 C:\Program Files (x86)\FastReports\FastCube.Net Professional\Nuget 資料夾中。

在下拉列表中選擇新增的包源並安裝包:

我們在Startup.cs檔案中連線FastCube,在Configure()方法中新增程式碼:

app.UseFastCube();

我們的應用程式已經包含 WeatherForecastController。讓我們向其中新增我們的 Web 方法:

[HttpGet("[action]")]
 public IActionResult ShowCube()
 {
 Cube cube = new Cube();
 Slice slice = new Slice()
 {
 Cube = cube
 };
 FilterManager filterManager = new FilterManager()
 {
 Cube = cube
 };
 WebGrid grid;
 grid = new WebSliceGrid()
 {
 Slice = slice
 };
 
 ViewBag.WebGrid = grid;
 
 cube.SourceType = SourceType.File;
 cube.Load(Path.Combine("C:\Users\FR\Downloads\fastcube-net-master\Demos\Data\", "Cubes", "calculated_measures.mdc")); return View(); }

Cube 和 Slice 物件是相關的,因為實際上,切片是多維資料集的一部分。WebGrid 物件用於顯示互動式交叉表。它可以顯示 WebCubeGrid 切片和 WebSliceGrid 多維資料集。在我們的示例中,我們載入了之前在 FastCube .NET 桌面版本中建立的多維資料集。

注意控制器繼承的類。它應該是 Controller,而不是 BaseController。

現在讓我們為這個方法建立一個檢視。這可以通過右鍵單擊 ShowCube 方法簽名來完成。該檢視將包含一行程式碼:

@await ViewBag.WebGrid.Render()

現在讓我們轉到位於 ClientApp 資料夾中的 SPA 應用程式。我們需要將我們的元件新增到src->components資料夾中。它將顯示帶有我們上面建立的檢視的 iframe。使用以下程式碼新增 Cube.js 檔案:

import React, { Component } from 'react';
export class Cube extends Component {
 static getCube() { 
 return { __html: '<iframe width="1000" height="1000" src="weatherforecast/ShowCube" />' };
 }
 render() {
 return (
 < div dangerouslySetInnerHTML={Cube.getCube()} />
 );
 } 
}

在這裡一切都很容易。我們顯示 iframe 引用控制器中的方法。

現在您需要將元件新增到 App.js 應用程式結構中:

import React, { Component } from 'react';
import { Route } from 'react-router';
import { Layout } from './components/Layout';
import { Home } from './components/Home';
import { FetchData } from './components/FetchData';
import { Counter } from './components/Counter';
import { Cube } from './components/Cube';
 
import './custom.css'
 
export default class App extends Component {
 static displayName = App.name;
 
 render () {
 return (
 <Layout>
 <Route exact path='/' component={Home} />
 <Route path='/counter' component={Counter} />
 <Route path='/fetch-data' component={FetchData} />
 <Route path='/cube' component={Cube} />
 </Layout>
 );
 }
}

此外,您需要在 NavMenu.js 檔案中新增一個新的選單項:

import React, { Component } from 'react';
import { Collapse, Container, Navbar, NavbarBrand, NavbarToggler, NavItem, NavLink } from 'reactstrap';
import { Link } from 'react-router-dom';
import './NavMenu.css';
 
export class NavMenu extends Component {
 static displayName = NavMenu.name;
 
 constructor (props) {
 super(props);
 
 this.toggleNavbar = this.toggleNavbar.bind(this);
 this.state = {
 collapsed: true
 };
 }
 
 toggleNavbar () {
 this.setState({
 collapsed: !this.state.collapsed
 });
 }
 
 render () {
 return (
 <header>
 <Navbar className="navbar-expand-sm navbar-toggleable-sm ng-white border-bottom box-shadow mb-3" light>
 <Container>
 <NavbarBrand tag={Link} to="/">FastCubeReact</NavbarBrand>
 <NavbarToggler onClick={this.toggleNavbar} className="mr-2" />
 <Collapse className="d-sm-inline-flex flex-sm-row-reverse" isOpen={!this.state.collapsed} navbar>
 <ul className="navbar-nav flex-grow">
 <NavItem>
 <NavLink tag={Link} className="text-dark" to="/">Home</NavLink>
 </NavItem>
 <NavItem>
 <NavLink tag={Link} className="text-dark" to="/counter">Counter</NavLink>
 </NavItem>
 <NavItem>
 <NavLink tag={Link} className="text-dark" to="/fetch-data">Fetch data</NavLink>
 </NavItem>
 <NavItem>
 <NavLink tag={Link} className="text-dark" to="/cube">Cube</NavLink>
 </NavItem>
 </ul>
 </Collapse>
 </Container>
 </Navbar>
 </header>
 );
 }
}

應用程式已準備就緒。讓我們執行它: