[{"id":"08e0fe96-3025-463b-bcee-87f4b29c462b","tags":[{"product":null,"links":null,"id":"92283933-94f9-4e9a-8d93-15ba4ec8b3ec","name":"upd","color":"#7e678a","productId":"77f3d9a0-2c87-4130-b77a-b94ccf13e3cb"}]},{"id":"0d5035e7-1a53-4dc5-b32e-9ce261bfa47e","tags":[{"product":null,"links":null,"id":"92283933-94f9-4e9a-8d93-15ba4ec8b3ec","name":"upd","color":"#7e678a","productId":"77f3d9a0-2c87-4130-b77a-b94ccf13e3cb"}]},{"id":"2fb2b485-f567-436c-9ca9-06dd71ceadb3","tags":[{"product":null,"links":null,"id":"92283933-94f9-4e9a-8d93-15ba4ec8b3ec","name":"upd","color":"#7e678a","productId":"77f3d9a0-2c87-4130-b77a-b94ccf13e3cb"}]},{"id":"c1466f0c-9710-41d3-9812-c7321630328a","tags":[{"product":null,"links":null,"id":"e1d31134-0bda-4c05-bee0-b1f21f82940b","name":"new","color":"#00A273","productId":"77f3d9a0-2c87-4130-b77a-b94ccf13e3cb"}]},{"id":"b0e616b5-b520-405e-b108-e81363a8dd74","tags":[{"product":null,"links":null,"id":"92283933-94f9-4e9a-8d93-15ba4ec8b3ec","name":"upd","color":"#7e678a","productId":"77f3d9a0-2c87-4130-b77a-b94ccf13e3cb"}]},{"id":"f5712fda-d364-4652-9783-3073e2560b97","tags":[{"product":null,"links":null,"id":"92283933-94f9-4e9a-8d93-15ba4ec8b3ec","name":"upd","color":"#7e678a","productId":"77f3d9a0-2c87-4130-b77a-b94ccf13e3cb"}]},{"id":"8f03c498-1e02-459a-a6de-ee619033d6d2","tags":[{"product":null,"links":null,"id":"92283933-94f9-4e9a-8d93-15ba4ec8b3ec","name":"upd","color":"#7e678a","productId":"77f3d9a0-2c87-4130-b77a-b94ccf13e3cb"}]},{"id":"2b701643-01a1-40e0-b49b-0a6e93c1f847","tags":[{"product":null,"links":null,"id":"e1d31134-0bda-4c05-bee0-b1f21f82940b","name":"new","color":"#00A273","productId":"77f3d9a0-2c87-4130-b77a-b94ccf13e3cb"}]},{"id":"07b4f367-7ddc-4c8a-932c-b180f112364e","tags":[{"product":null,"links":null,"id":"e1d31134-0bda-4c05-bee0-b1f21f82940b","name":"new","color":"#00A273","productId":"77f3d9a0-2c87-4130-b77a-b94ccf13e3cb"}]}]
Webデザイナコンポーネントでは、レポートをプレビューする機能が用意されていません。そのためホストアプリケーションのコードで設定する必要があります。このトピックでは、いくつかの一般的なシナリオについて説明しています。
Webデザイナコンポーネントでは、ツールバーに[プレビュー]ボタンが含まれています。ただし、これは既定で無効になっています。このボタンを有効にするには、コードでWebデザイナコンポーネントのインスタンスに対してonRender
アクションハンドラを設定する必要があります。詳細については、アクションハンドラを参照してください。ユーザーが[プレビュー]ボタンを押すと、デザイナはonRender
ハンドラを呼び出します。デザイナは、表示されているレポートのID、表示名、およびレポート定義などを含む情報を最初の引数に渡します。onRender
ハンドラは、ActiveReportJSビューワのインスタンスにレポート定義をロードするか、サポートされている形式でレポートをエクスポートします。詳細については、次のセクションを参照してください。
以下は、ReactアプリケーションでonRender
ハンドラを使用して、現在表示されているレポートをActiveReportsJSビューワに表示するサンプルです。
import { Designer as ReportDesigner } from "@mescius/activereportsjs/reportdesigner";
import React from "react";
import {
RDLReportDefinition,
Viewer as ReportViewer,
} from "@mescius/activereportsjs-react";
import "@mescius/activereportsjs/styles/ar-js-ui.css";
import "@mescius/activereportsjs/styles/ar-js-viewer.css";
import "@mescius/activereportsjs/styles/ar-js-designer.css";
export const DesignerHost: React.FC = () => {
const designerRef = React.useRef<ReportDesigner | undefined>();
const viewerRef = React.useRef<ReportViewer | null>(null);
React.useEffect(() => {
designerRef.current = new ReportDesigner("#designer-host");
designerRef.current.setActionHandlers({
onRender(report) {
viewerRef.current?.Viewer.open(
report.definition as RDLReportDefinition
);
return Promise.resolve();
},
});
}, []);
return (
<div id="app-host">
<div id="designer-host"></div>
<div id="viewer-host">
<ReportViewer ref={viewerRef} />
</div>
</div>
);
};
React、Angular、Vue、およびJavaScriptアプリケーションの完全な実装例については、デモを参照してください。
ActiveReportJSデザイナのインスタンスのgetReportメソッドを使用して、表示されているレポートの情報を取得できます。このメソッドを使用して、サポートされている形式でレポートをエクスポートするカスタムの[プレビュー]ボタンを追加します。以下は、Reactアプリケーションでこの方法を実装するサンプルです。
import { Designer as ReportDesigner } from "@mescius/activereportsjs/reportdesigner";
import React from "react";
import "@mescius/activereportsjs/styles/ar-js-ui.css";
import "@mescius/activereportsjs/styles/ar-js-viewer.css";
import "@mescius/activereportsjs/styles/ar-js-designer.css";
import { Core, PdfExport } from "@mescius/activereportsjs";
import "@mescius/activereportsjs-i18n";
export const DesignerHost: React.FC = () => {
const designerRef = React.useRef<ReportDesigner | undefined>();
const onPdfPreview = async () => {
const reportInfo = await designerRef.current?.getReport();
const report = new Core.PageReport();
await report.load(reportInfo?.definition);
const doc = await report.run();
const result = await PdfExport.exportDocument(doc);
result.download("exportedreport.pdf");
};
React.useEffect(() => {
designerRef.current = new ReportDesigner("#designer-host", );
}, []);
return (
<div id="app-host">
<button onClick={() => onPdfPreview()} id="btn-get-pdf">
Get PDF Report
</button>
<div id="designer-host"></div>
</div>
);
};
React、Angular、Vue、およびJavaScriptアプリケーションの完全な実装例については、デモを参照してください。