转至元数据结尾
转至元数据起始

1. 内容概述



本节主要为您介绍React框架下在代码中实现动态设置报表的数据源。

2. 具体实现



提供设置报表数据源的API


//动态设置数据源
report.DataSources[0].ConnectionProperties.ConnectString = "jsondata=" + JSON.stringify(data);


React页面具体实现代码

import React, {Fragment} from "react";
import "@grapecity/activereports-localization-zh";
import ReactDOM from "react-dom";
import {Viewer as ReportViewer} from "@grapecity/activereports-react";
import "@grapecity/activereports-localization";

async function loadData() {
    //使用Fetch Api提取数据 
    const headers = new Headers();

    const dataRequest = new Request(
        "https://demodata.grapecity.com/northwind/api/v1/Customers",
        {
            headers: headers,
        }
    );

    const response = await fetch(dataRequest);
    const data = await response.json();
    return data;
}

async function loadReport(){
    //从文件加载定义报表
    const reportResponse = await fetch( "reports/p-report.rdlx-json");
    const report = await reportResponse.json();
    return report;
}


function App() {
    const viewerRef = React.useRef();
    React.useEffect(()=>{
        async function openReport(){
            const data = await loadData();
            const report = await loadReport();
            //动态设置数据源
            report.DataSources[0].ConnectionProperties.ConnectString = "jsondata=" + JSON.stringify(data);
            viewerRef.current.Viewer.open(report);
        }
        openReport();
    }, []);
    return (
        <div id="viewer-host" style={{position: "absolute",height: "100%"}}>
            <ReportViewer ref={viewerRef} language={"zh"}/>
        </div>
    );
}

ReactDOM.render(<App/>, document.getElementById("root"));

3. 实现效果


原报表文件


设置了数据源后


4. demo附件下载


react-demo-datasource.zip

  • 无标签