• <menu id="w2i4a"></menu>
  • logo FastReport-web報(bào)表開(kāi)發(fā)系列教程(持續(xù)更新中)

    如何在ReactJS中使用FastReport Core Web Report


    下載FastReport.Net最新版本

    FastReport.Net在線訂購(gòu)火熱進(jìn)行中,立可享受特別優(yōu)惠!點(diǎn)此鏈接,速來(lái)?yè)屬?gòu)?。?!

        FastReport Core Web Report旨在與流行的.Net Core框架協(xié)同工作。由于與趨勢(shì)網(wǎng)框架和Angular,React,Vue等庫(kù)的兼容性,他獲得了更多的人氣。因此,許多FastReport用戶希望在上面庫(kù)中編寫的Web應(yīng)用程序中使用報(bào)表。在另一篇文章中,我們已經(jīng)考慮過(guò)如何在基于Angular的單頁(yè)面應(yīng)用程序中顯示報(bào)表。現(xiàn)在讓我們看一下使用FR的例子。在ReactJS上的應(yīng)用程序的核心。

        要使用React庫(kù),您需要安裝Node JS程序平臺(tái),該平臺(tái)允許您在服務(wù)器端運(yùn)行JavaScript代碼。此外,它將安裝Package Manager NPM,它允許您安裝開(kāi)發(fā)所需的各種Java Script包。

        接下來(lái),您需要.Net Core SDK 2.0。但是,如果您正在使用MS Visual Studio 2017進(jìn)行開(kāi)發(fā),那么您已經(jīng)安裝了此SDK。

        要在React上創(chuàng)建項(xiàng)目,只需在Windows命令提示符下運(yùn)行一個(gè)命令。但首先需要打開(kāi)要在其中創(chuàng)建項(xiàng)目的文件夾(命令CD)。創(chuàng)建一個(gè)項(xiàng)目。

        dotnet new react -o FRCoreWebReportReact

        正如您猜測(cè)的那樣,F(xiàn)RCoreWebReportReact是未來(lái)項(xiàng)目的名稱?,F(xiàn)在打開(kāi)    FRCoreWebReportReact。csproj文件。

        在NuGet Manager中添加FastReport包:

    FastReport

        這些包位于已安裝FastReport.Net的文件夾中:

        C:\ Program Files(x86)\ FastReports \ FastReport.Net \ Nugets

        接下來(lái)要做的是將App_Data文件夾添加到項(xiàng)目中。從FastReport.Net的交付中,我們可以為它們提供多個(gè)報(bào)表模板和XML數(shù)據(jù)庫(kù)。

    FastReport

        讓我們?cè)偬砑右粋€(gè)文件夾到項(xiàng)目的根目錄 - Views。它將存儲(chǔ)我們稍后將討論的視圖。

        現(xiàn)在讓我們開(kāi)始開(kāi)發(fā)應(yīng)用程序的后端。Controllers文件夾中已有一個(gè) - SampleDataController。讓我們創(chuàng)建自己的,名為ReportController:

    using System;
    using Microsoft.AspNetCore.Mvc;
    using FastReport.Web;
     
    namespace FRCoreWebReportReact.Controllers
    {
     [Route("api/[controller]")]
     public class ReportController : Controller
     {
     [HttpGet("[action]")]
     public IActionResult DisplayReport(string name)
     {
     WebReport WebReport = new WebReport();
     WebReport.Width = "1000";
     WebReport.Height = "1000";
     //Load report into the object WebReport
     WebReport.Report.Load(String.Format("App_Data/{0}.frx", name));
     //Create Data source
     System.Data.DataSet dataSet = new System.Data.DataSet();
     //Open Data base xml
     dataSet.ReadXml(@"App_Data/nwind.xml"); 
     //Register data source in the object
     WebReport.Report.RegisterData(dataSet, "NorthWind");
     //Send report to View
     ViewBag.WebReport = WebReport;
     return View();
     }
     }
    }

        控制器中只有一種方法 - 將報(bào)告模板加載到Web報(bào)表對(duì)象中并在視圖中顯示它。DisplayReport方法接受name參數(shù) - 報(bào)表的標(biāo)題。

        現(xiàn)在,對(duì)于此Web方法,您需要?jiǎng)?chuàng)建一個(gè)視圖。右鍵單擊方法名稱并選擇AddView:

    FastReport

        另一個(gè)文件夾 - 報(bào)表 - 將自動(dòng)添加到文件夾視圖中,并且將顯示DisplayReport視圖。使用以下代碼行替換視圖的內(nèi)容:

    @await ViewBag.WebReport.Render()

        在應(yīng)用程序的服務(wù)器端唯一要做的就是編輯Startup.cs文件。在Configure方法中,添加以下行:

    app.UseFastReport();

        轉(zhuǎn)到ReactJS上的應(yīng)用程序的客戶端。

        在解決方案資源管理器中,找到ClientApp目錄并展開(kāi)它。然后我們打開(kāi)src和組件。

    讓我們?cè)谶@個(gè)文件夾中創(chuàng)建一個(gè)新的Report.js文件:

    import React, { PureComponent, Fragment } from 'react';
     
    export class Report extends PureComponent {
     constructor(props) {
     super(props);
     this.state = {
     options: [
     {
     value: '-- Select report name --',
     },
     {
     value: 'Matrix',
     },
     {
     value: 'Master-Detail',
     
     },
     {
     value: 'QR-Codes',
     }, 
     {
     value: 'Highlight',
     }, 
     {
     value: 'Image',
     }
     ]
     };
     }
     
     handleChange = (event) => {
     this.setState({ value: event.target.value });
     this.name = event.target.value;
     }
     
     static createMarkup(name) {
     return { __html: '' };
     }
     
     static getReport(name) {
     return (
      )
     }
     
     render() {
     const { options, value } = this.state;
     let contents = this.name ? Report.getReport(this.name) : ;
     
     return (
         {options.map(item => (
      {item.value}
      ))}
        {contents}
      );
     }
    }

        此組件表示將顯示報(bào)表的頁(yè)面。在類構(gòu)造函數(shù)中,我們聲明了一個(gè)包含報(bào)表名稱的選項(xiàng)數(shù)組。然后實(shí)現(xiàn)onChange-handleChange事件處理程序。在其中,我們指定options數(shù)組的元素和變量名的值,它們將傳遞給服務(wù)器以生成所選報(bào)表。

        應(yīng)該一起考慮createMarkup和getReport的靜態(tài)方法。第一個(gè)創(chuàng)建一個(gè)IFRAME,其數(shù)據(jù)源是我們之前實(shí)現(xiàn)的DisplayReport視圖。第二種是將HTML代碼從createMarkup轉(zhuǎn)換為安全的代碼,允許您將其嵌入DOM中。

        Render()函數(shù)包含將在頁(yè)面上顯示的標(biāo)記代碼。這里我們創(chuàng)建一個(gè)變量?jī)?nèi)容,當(dāng)您在下拉列表中選擇報(bào)表名稱時(shí),它將把結(jié)果作為值getReport函數(shù)。否則,不會(huì)顯示任何內(nèi)容。

        注意

       FRCoreWebReportReact      &hellip;
       Report
      &hellip;

        現(xiàn)在讓我們將Report組件添加到App.js:

    import { Report } from './components/Report';
    export default class App extends Component {
    displayName = App.name
     
    render() {
    return (&hellip;&hellip;);
    }
    }

        運(yùn)行應(yīng)用程序:

    FastReport

        首先頁(yè)面為空,只有下拉列表可用。從中選擇一個(gè)報(bào)表:

    FastReport

        現(xiàn)在選擇另一份報(bào)表:

    FastReport

        總而言之,假設(shè)我們的目標(biāo)已實(shí)現(xiàn) - FastReport報(bào)表顯示在React庫(kù)中編寫的應(yīng)用程序中。此外,Web報(bào)表控制面板中的所有按鈕都保存了功能,例如導(dǎo)出。選擇導(dǎo)出到Microsoft Excel 2007:

    FastReport

        我們得到的文件:

    FastReport


    相關(guān)鏈接:

    關(guān)于產(chǎn)品的任何問(wèn)題,歡迎咨詢在線客服>>

    掃碼咨詢


    添加微信 立即咨詢

    電話咨詢

    客服熱線
    023-68661681

    TOP
    三级成人熟女影院,欧美午夜成人精品视频,亚洲国产成人乱色在线观看,色中色成人论坛 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();