Wir beginnen die Artikelserie, die den Ereignissen im Berichtsgenerator für JavaScript gewidmet ist. Verschiedene Ereignisse entstehen bei solchen Objekten wie Bericht, und auch bei visuellen Komponenten – Designer und Viewer während des Entwickelns von JS-Projekten.
onPrepareVariables
Die Variablen der Berichte können sowohl im Bericht, als auch in den Abfragen zu den Datenspeicherungen verwendet werden. Sie können mit Hilfe vom Ereignis onPrepareVariables die Variablen ausfüllen oder ihre Werte verändern.
Dieses Ereignis wird am Anfang der Berichterstellung vor dem Ausfüllen der Variablen aufgerufen. Die Liste der Argumente des Ereignis-Behandlers:
onBeginProcessData
Manchmal muss man vor der Berichterstellung die Verbindung mit der Datenbank ersetzen. Dafür wird das Ereignis onBeginProcessData verwendet.
Dieses Ereignis wird vor der Anfrage der Daten, die für Erstellen vom Bericht erforderlich sind, aufgerufen, und ermöglicht die Parameter der Verbindung zu ändern. Die Liste der Argumente des Ereignis-Behandlers:
onEndProcessData
Manchmal muss man die Daten nach dem Erhalten korrigieren oder umwandeln. Zum Beispiel, einen benutzerdefinierten Datensatz erstellen. Es kann mit dem Ereignis onEndProcessData erfüllt werden.
Dieses Ereignis wird nach dem Erhalten der Daten, aber vor dem Erstellen vom Bericht aufgerufen. Die Liste der Argumente des Ereignis-Behandlers:
onBeginRender
Dieses Ereignis wird am Anfang des Erstellens der Berichtsvorlage aufgerufen. Zjum Beispiel, man kann einen Wert in der Komponente vor der Verarbeitung ersetzen:
onRendering
Dieses Ereignis wird während des Erstellens der Berichtsvorlage, d.h. beim Erstellen von jeder neuen Vorlageseite, aufgerufen.
Unten ist der Code der Veränderung nummerischer Werte in Textkomponenten dargestellt:
onEndRender
Dieses Ereignis wird am Ende der Verarbeitung der Berichtsvorlage aufgerufen.
Zum Beispiel, man kann den Bericht nach dem Erstellen exportieren:
onExporting
Dieses Ereignis wird vor dem Export des Berichtes aufgerufen. Zum Beispiel, man kann die Nachricht anzeigen, dass der Bericht für Export fertig ist:
onExported
Dieses Ereignis wird nach dem Export vom Bericht aufgerufen. Zum Beispiel, nach dem Export vom Bericht kann man die Nachricht anzeigen, dass der Export beendet ist:
onPrinting
Der Bericht kann zum Drucken geschickt werden, und in diesem Fall der Bericht kann mit diesem Ereignis verändert werden.
Dieses Ereignis entsteht beim Aufrufen von solchen Ereignissen wie report.print() oder report.printToPdf() und ermöglicht den Bericht vor dem Drucken zu ändern.
Zum Beispiel, kann man ein Bild im Bericht vor dem Drucken entfernen:
onPrinted
Noch ein Ereignis beim Drucken vom Bericht ermöglicht den schon umgewandelten Bericht in HTML- oder PDF-Dokument zu ändern, oder seine eigene Drucken-Weise zu verwirklichen.
Dieses Ereignis entsteht beim Aufrufen von solchen Ereignissen wie report.print() oder report.printToPdf() nach dem Export in PDF oder HTML (abhängig von der aufrufenden Methode). Bemerken Sie!
Das Ereignis onPrinted entsteht nach dem Export vom Bericht, und das Ereignis onPrinting – nach dem Aufrufen der Drucken-Methode vor der Umwandlung. Die Liste der Argumente des Ereignis-Behandlers:
onRefreshing
Wenn es erforderlich ist, etwas bei der Aktualisierung vom Bericht oder Dashboard zu ändern, kann man das Ereignis onRefreshing verwenden.
Dieses Ereignis entsteht beim Klicken auf die Schaltfläche Aktualisieren (Refresh) im Viewer oder bei der automatischen Aktualisierung mit Hilfe von der Eigenschaft report.refreshTime.
Berichtsereignisse
Die Variablen der Berichte können sowohl im Bericht, als auch in den Abfragen zu den Datenspeicherungen verwendet werden. Sie können mit Hilfe vom Ereignis onPrepareVariables die Variablen ausfüllen oder ihre Werte verändern.
Dieses Ereignis wird am Anfang der Berichterstellung vor dem Ausfüllen der Variablen aufgerufen. Die Liste der Argumente des Ereignis-Behandlers:
{
event: "PrepareVariables",
sender: "Report",
report: StiReport,
preventDefault: boolean,
async: boolean,
variables: []
}
Ein Beispiel des Ersetzens vom Wert in der Berichtsvariablen:
report.onPrepareVariables = (args, callback) => {
args.variables[0].value = "Replace value";
}
Manchmal muss man vor der Berichterstellung die Verbindung mit der Datenbank ersetzen. Dafür wird das Ereignis onBeginProcessData verwendet.
Dieses Ereignis wird vor der Anfrage der Daten, die für Erstellen vom Bericht erforderlich sind, aufgerufen, und ermöglicht die Parameter der Verbindung zu ändern. Die Liste der Argumente des Ereignis-Behandlers:
{
sender: "Report",
event: "BeginProcessData",
report: StiReport,
preventDefault: boolean,
async: boolean,
command: string,
database: string,
connection: string,
headers: [],
withCredentials: string,
// Json
pathData: string,
tryParseDateTime: boolean,
relationDirection: StiRelationDirection,
// Xsd
pathSchema: string,
// Xml
pathData: string,
tryParseDateTime: boolean,
relationDirection: StiRelationDirection,
// Excel
pathData: string,
firstRowIsHeader: boolean,
// OData
connectionString: string,
dataSource: string,
collectionName: string,
// Sql
connectionString: string,
dataSource: string,
queryString: string,
timeout: number,
parameters: { name: string, value: string | number }[],
escapeQueryParameters: boolean,
// Gis
pathData: string,
separator: string,
dataType: StiGisDataType,
// Csv
pathData: string,
separator: string,
codePage: number,
// DBase
pathData: string,
codePage: number
}
Unten ist ein Beispiel des Ersetzens von der Verbindungszeichenfolge dargestellt:
report.onBeginProcessData = (args) => {
if (args.database == "MySQL")
args.connectionString = "new connection string";
}
Und auch ein Beispiel von eigener Umsetzung des Erhaltens von Daten:
report.onBeginProcessData = (args, callback) => {
if (args.database == "MySQL"){
args.preventDefault = true;
var result = {
success: true,
rows: [
["value1", 1, false],
["value2", 1, true],
["value3", 2, false]
],
columns: [
"Column1_name",
"Column2_name",
"Column3_name"
],
types:[
"string",
"int",
"boolean"
]
}
// https://github.com/stimulsoft/DataAdapters.JS/
callback(result);
}
}
Manchmal muss man die Daten nach dem Erhalten korrigieren oder umwandeln. Zum Beispiel, einen benutzerdefinierten Datensatz erstellen. Es kann mit dem Ereignis onEndProcessData erfüllt werden.
Dieses Ereignis wird nach dem Erhalten der Daten, aber vor dem Erstellen vom Bericht aufgerufen. Die Liste der Argumente des Ereignis-Behandlers:
{
sender: "Report",
event: "EndProcessData",
report: StiReport,
command: string,
dataSource: string,
connection: string,
database: sgtring,
result: DataSet|any
}
Ein Beispiel des Korrigierens der Daten vom Adapter:
report.onEndProcessData = (args) => {
if (args.command == "ExecuteQuery" && args.dataSource == "Categories")
args.result.rows.push(rowData) ;
// https://github.com/stimulsoft/DataAdapters.JS/
}
Dieses Ereignis wird am Anfang des Erstellens der Berichtsvorlage aufgerufen. Zjum Beispiel, man kann einen Wert in der Komponente vor der Verarbeitung ersetzen:
report.onBeginRender = function (args) {
const text = this.pages.getByIndex(0).components.getByIndex(0);
const newValue = report.dictionary.variables.getByName("Variable2").value;
text.text = newValue;
}
Dieses Ereignis wird während des Erstellens der Berichtsvorlage, d.h. beim Erstellen von jeder neuen Vorlageseite, aufgerufen.
Unten ist der Code der Veränderung nummerischer Werte in Textkomponenten dargestellt:
report.onRendering = function (args) {
const components = this.pages.getByIndex(0).components.list;
for (let component of components) {
if (component instanceof Stimulsoft.Report.Components.StiText) {
const num = Number.parseFloat(component.text);
if (!isNaN(num)) {
component.text = String(num * 100);
} else {
console.log("The value is NaN");
}
}
}
}
Dieses Ereignis wird am Ende der Verarbeitung der Berichtsvorlage aufgerufen.
Zum Beispiel, man kann den Bericht nach dem Erstellen exportieren:
report.onEndRender = (args) => {
report.exportDocumentAsync(function (data) {
Stimulsoft.System.StiObject.saveAs(data, "Report.pdf", "application/pdf");
}, Stimulsoft.Report.StiExportFormat.Pdf);
}
Dieses Ereignis wird vor dem Export des Berichtes aufgerufen. Zum Beispiel, man kann die Nachricht anzeigen, dass der Bericht für Export fertig ist:
report.onExporting = (args) => {
console.log("The report is complected for exporting to ${args.exportFormat");
}
Dieses Ereignis wird nach dem Export vom Bericht aufgerufen. Zum Beispiel, nach dem Export vom Bericht kann man die Nachricht anzeigen, dass der Export beendet ist:
report.onExported = (args) => {
const pages = report.renderedPages.list;
console.log("PDF file contains " + pages.length + " pages");
}
Der Bericht kann zum Drucken geschickt werden, und in diesem Fall der Bericht kann mit diesem Ereignis verändert werden.
Dieses Ereignis entsteht beim Aufrufen von solchen Ereignissen wie report.print() oder report.printToPdf() und ermöglicht den Bericht vor dem Drucken zu ändern.
Zum Beispiel, kann man ein Bild im Bericht vor dem Drucken entfernen:
report.onExported = (args) => {
const pages = report.renderedPages.list;
console.log("PDF file contains " + pages.length + " pages");
}
Noch ein Ereignis beim Drucken vom Bericht ermöglicht den schon umgewandelten Bericht in HTML- oder PDF-Dokument zu ändern, oder seine eigene Drucken-Weise zu verwirklichen.
Dieses Ereignis entsteht beim Aufrufen von solchen Ereignissen wie report.print() oder report.printToPdf() nach dem Export in PDF oder HTML (abhängig von der aufrufenden Methode). Bemerken Sie!
Das Ereignis onPrinted entsteht nach dem Export vom Bericht, und das Ereignis onPrinting – nach dem Aufrufen der Drucken-Methode vor der Umwandlung. Die Liste der Argumente des Ereignis-Behandlers:
{
sender: "Report",
event: "PrintReport",
report: StiReport,
preventDefault: boolean,
async: boolean,
data: string | number[]
}
Ein Beispiel des Unterbrechens der Ausführung und der Verwirklichung von eigener Drucken-Weise:
report.onPrintReport = (args) => {
args.preventDefault = true;
var printData = args.data;
myPrintingMethod(printData);
}
Wenn es erforderlich ist, etwas bei der Aktualisierung vom Bericht oder Dashboard zu ändern, kann man das Ereignis onRefreshing verwenden.
Dieses Ereignis entsteht beim Klicken auf die Schaltfläche Aktualisieren (Refresh) im Viewer oder bei der automatischen Aktualisierung mit Hilfe von der Eigenschaft report.refreshTime.
Wenn Sie noch Fragen über Berichtsereignisse haben, kontaktieren Sie uns. Im nächsten Artikel erzählen wir über die Ereignisse des Berichtsdesigners.