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


