找回密码
 立即注册

QQ登录

只需一步,快速开始

KearneyKang 讲师达人认证 悬赏达人认证
超级版主   /  发表于:2020-11-17 17:19  /   查看:2704  /  回复:0
本帖最后由 KearneyKang 于 2020-11-17 17:55 编辑

使用ActiveReportsJS设计器预览报表
ActiveReportsJS报表设计器没有现成的预览功能,因此托管应用程序的代码必须进行设置。该页面提供了几种常见方案的。
启动 "预览" 按钮
ActiveReportsJS报表设计器组件在工具栏上包含“预览”按钮。 但是,默认情况下它未启用并且不可见。 该代码应为设计器组件实例设置`onRender`动作处理程序以启用此按钮。 检查 [动作处理器](Action-Handlers) 页面以获取更多信息。 当用户单击“预览”按钮时,ActiveReportsJS设计器将调用`onRender`处理程序。 设计器在第一个参数中传递当前显示的报表信息,该信息包括id,显示名称和报表定义。 `onRender`处理程序可以在ActiveReportJS查看器实例中加载报告定义,也可以将报表导出为支持的格式之一。 有关更多信息,请检查以下页面:
- [从JSON定义加载报告](../ActiveReportsJSViewer/Loading-Reports#loading-a-report-from-the-json-definition)
- [导出报告,而无需将它们加载到查看器中](../ActiveReportsJSViewer/Export/Export/index#export-reports-without-loading-them-in-the-viewer)
这是一个React应用程序的`onRender`处理程序示例,该应用程序在ActiveReportsJS Report Viewer中显示当前显示的报表。
javascript
  1. import { Designer as ReportDesigner } from "@grapecity/activereports/reportdesigner";
  2. import React from "react";
  3. import {
  4.   RDLReportDefinition,
  5.   Viewer as ReportViewer,
  6. } from "@grapecity/activereports-react";
  7. import "@grapecity/activereports/styles/ar-js-ui.css";
  8. import "@grapecity/activereports/styles/ar-js-viewer.css";
  9. import "@grapecity/activereports/styles/ar-js-designer.css";

  10. export const DesignerHost: React.FC = () => {
  11.   const designerRef = React.useRef<ReportDesigner | undefined>();
  12.   const viewerRef = React.useRef<ReportViewer | null>(null);

  13.   React.useEffect(() => {
  14.     designerRef.current = new ReportDesigner("#designer-host");
  15.     designerRef.current.setActionHandlers({
  16.       onRender(report) {
  17.         viewerRef.current?.Viewer.open(
  18.           report.definition as RDLReportDefinition
  19.         );
  20.         return Promise.resolve();
  21.       },
  22.     });
  23.   }, []);

  24.   return (
  25.     <div id="app-host">
  26.       <div id="designer-host"></div>
  27.       <div id="viewer-host">
  28.         <ReportViewer ref={viewerRef} />
  29.       </div>
  30.     </div>
  31.   );
  32. };
复制代码
预览报告以响应UI事件
应用程序可以使用ActiveReportJS设计器实例的 [getReport方法](@api/classes/reportdesigner.designer.html#getreport) 来获取当前显示的报表信息。 使用此方法可以添加自定义的“预览报表” UI,该UI可以将报表导出为支持的格式之一。 这是React应用程序的这种实现的示例。
javascript
  1. import { Designer as ReportDesigner } from "@grapecity/activereports/reportdesigner";
  2. import React from "react";
  3. import "@grapecity/activereports/styles/ar-js-ui.css";
  4. import "@grapecity/activereports/styles/ar-js-viewer.css";
  5. import "@grapecity/activereports/styles/ar-js-designer.css";
  6. import { Core, PdfExport } from "@grapecity/activereports";
  7. import "@grapecity/activereports-localization";

  8. export const DesignerHost: React.FC = () => {
  9.   const designerRef = React.useRef<ReportDesigner | undefined>();

  10.   const onPdfPreview = async () => {
  11.     const reportInfo = await designerRef.current?.getReport();
  12.     const report = new Core.PageReport();
  13.     await report.load(reportInfo?.definition);
  14.     const doc = await report.run();
  15.     const result = await PdfExport.exportDocument(doc);
  16.     result.download("exportedreport.pdf");
  17.   };

  18.   React.useEffect(() => {
  19.     designerRef.current = new ReportDesigner("#designer-host", );
  20.   }, []);

  21.   return (
  22.     <div id="app-host">
  23.       <button onClick={() => onPdfPreview()} id="btn-get-pdf">
  24.         Get PDF Report
  25.       </button>
  26.       <div id="designer-host"></div>
  27.     </div>
  28.   );
  29. };
复制代码





0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部