请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

将报表加载到ActiveReportsJS设计器
[setReport](@api/classes/reportdesigner.designer.html#setreport) 方法允许将特定的报表加载到ActiveReportsJS设计器组件的实例。 此方法接受应用程序内可访问的URL:`setReport({<id: URL>})` 或报表定义对象: `setReport({definition: <ReportDefinition>})``setReport({definition:<ReportDefinition>})`可选地,传递给`setReport`方法的对象可以包含`displayName`属性,该属性指示报告的个性化名称。 ``id``属性的值最初与`setReport({<id:URL>})`表单的URL匹配,并且可以与`setReport({definition:<ReportDefinition>})`的参数一起传递,传递形式也是如此。
该页面提供了几种常见方案实例。
设置最初显示的报表
默认情况下,ActiveReportsJS报表设计器组件的实例显示空白的RDL报表。 要更改此行为,请在设计器实例初始化后立即调用`setReport`方法。 检查 [Integration](Integration) 页面, 以获取有关在各种应用程序类型中初始化设计器组件的更多信息。 这是在React应用程序中设置初始显示的报告的示例。 访问 [Live Demo](/activereportsjs/demos/features/designer-report-loading/) 以获取有关React,Angular,Vue和纯JavaScript应用程序的完整示例。
javascript
  1. import React from "react";
  2. import { Designer as ReportDesigner } from "@grapecity/activereports/reportdesigner";

  3. const initDesigner = (designerHostSelector) => {
  4.   const designer = new ReportDesigner(designerHostSelector);
  5.   // set the initially displayed report to "company-template"
  6.   designer.setReport({ id: "/reports/company-template.rdlx-json" });
  7. };

  8. export const DesignerHost = () => {
  9.   React.useEffect(() => initDesigner("#designer-host"), []);
  10.   return <div id="designer-host"></div>;
  11. };
  12. ```

  13. ### 启用 "新建报表" 按钮

  14. ActiveReportsJS报表设计器组件在工具栏上包含`新建报表`按钮。 但是,默认情况下它未启用并且不可见。 该代码应为设计器组件实例设置"onCreate"动作处理程序以启用此按钮。 检查 [Action Handlers](Action-Handlers) 检查[Action Handlers](Action-Handlers)页面以获取更多信息。 `onCreate` 处理程序应返回解析为报告链接或报告定义的Promise,这些对象的结构与上述setReport参数相同。 这是React应用程序的`onCreate`处理程序的示例。 访问[Live Demo](/activereportsjs/demos/features/designer-report-loading/) 以获取有关React,Angular,Vue和纯JavaScript应用程序的完整示例。

  15. ```javascript
  16. import React from "react";
  17. import { Designer as ReportDesigner } from "@grapecity/activereports/reportdesigner";

  18. const initDesigner = (designerHostSelector) => {
  19.   const designer = new ReportDesigner(designerHostSelector);
  20.   designer.setActionHandlers({
  21.     onCreate: function () {
  22.       return Promise.resolve({ id: "/reports/company-template.rdlx-json" });
  23.     },
  24.   });
  25. };

  26. export const DesignerHost = () => {
  27.   React.useEffect(() => initDesigner("#designer-host"), []);
  28.   return <div id="designer-host"></div>;
  29. };
复制代码
启用 "打开报表" 按钮
ActiveReportsJS报表设计器组件在工具栏上包含`打开`按钮。 但是,默认情况下它未启用并且不可见。 该代码应为设计器组件实例设置`onOpen`动作处理程序以启用此按钮。 检查[Action Handlers](Action-Handlers)页面以获取更多信息。 `onOpen`处理程序应返回解析为报告链接或报告定义的`Promise`,这些对象的结构与上述setReport参数相同。 访问 [Live Demo](/activereportsjs/demos/features/designer-report-loading/) 以获取有关React,Angular,Vue和纯JavaScript应用程序的完整示例。
加载报表以响应UI事件
应用程序可以在任何时间使用`setReport` 方法加载报表。这是React应用程序的示例,该应用程序在位于设计器组件外部的按钮的click事件处理程序中调用`setReport`方法。访问 [Live Demo](/activereportsjs/demos/features/designer-report-loading/) 以获取有关React,Angular,Vue和纯JavaScript应用程序的完整示例。
javascript
  1. import React from "react";
  2. import { Designer as ReportDesigner } from "@grapecity/activereports/reportdesigner";

  3. export const DesignerHost: React.FC = () => {
  4.   const designerRef = React.useRef<ReportDesigner | undefined>();
  5.   React.useEffect(() => {
  6.     designerRef.current = new ReportDesigner("#designer-host");
  7.   }, []);
  8.   const resetDesigner = (reportId: string) => {
  9.     designerRef.current?.setReport({ id: reportId });
  10.   };
  11.   return (
  12.     <Fragment>
  13.       <button onClick={() => resetDesigner("/reports/company-template.rdlx-json")}>
  14.         Set New Report
  15.       </button>
  16.       <div id="designer-host"></div>
  17.     </Fragment>
  18.   );
  19. };
复制代码


1 个回复

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