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附件下载