Wir setzen die Artikelserie über die Ereignisse im Berichtsgenerator für JavaScript-Anwendungen fort. Im vorigen Artikel haben wir über die Berichtsereignisse geschrieben, und heute geht die Rede um Viewerereignisse.

Die Viewerereignisse

  • onPrepareVariables

  • Das Ereignis wird am Anfang des Renderns des Berichtes vor dem Ausfüllen der Variablen im Bericht aufgerufen. Das Ereignis entsteht sofort nach der Verarbeitung des Ereignisses onPrepareVariable bei der Instanz StiReport. Die Liste der Argumente des Ereignis-Behandlers:
    {
        event: "PrepareVariables",
        sender: "Viewer",
        report: StiReport,
    
        preventDefault: boolean,
        async: boolean,
        
        variables: []
    }
    Ein Beispiel des Ersetzens vom Wert in der Berichtsvariablen:
    viewer.onPrepareVariables = (args, callback) => {
        args.variables[0].value = "Replace value";
    }

  • onBeginProcessData

  • Das Ereignis wird vor der Anfrage der Daten, die für Erstellen vom Bericht erforderlich sind, aufgerufen, und entsteht sofort nach der Verarbeitung des Ereignisses onBeginProcessData bei der Instanz StiReport. Die Liste der Argumente des Ereignis-Behandlers:
    {
        sender: "Viewer",
        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:
    viewer.onBeginProcessData = (args) => {
        if (args.database == "MySQL")
            args.connectionString = "new connection string";
    }
    Und auch ein Beispiel von eigener Umsetzung des Erhaltens von Daten:
    viewer.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);
        }
    }

  • onEndProcessData

  • Dieses Ereignis wird nach dem Erhalten der Daten, die für Erstellen vom Bericht erforderlich sind, aufgerufen. Das Ereignis entsteht sofort nach der Verarbeitung des Ereignisses onEndProcessData bei der Instanz StiReport. Die Liste der Argumente des Ereignis-Behandlers:
    {
        sender: "Viewer",
        event: "EndProcessData",
        report: StiReport,
    
        command: string,
        dataSource: string,
        connection: string,
        database: string,
    
        result: DataSet|any
    }
    Ein Beispiel des Korrigierens der Daten vom Adapter:
    viewer.onEndProcessData = (args) => {
        if (args.command == "ExecuteQuery" && args.dataSource == "Categories")
            args.result.rows.push(rowData) ;
    
        // https://github.com/stimulsoft/DataAdapters.JS/
    }

  • onPrintReport

  • Dieses Ereignis ermöglicht entweder den Bericht vor dem Drucken anzupassen oder selbstständig das Drucken zu realisieren.
    Das Ereignis wird vor dem Drucken vom Bericht aufgerufen. Die Liste der Argumente des Ereignis-Behandlers:
    {
        sender: "Viewer",
        event: "PrintReport",
        report: StiReport,
        
        preventDefault: boolean,
        async: boolean
        
        printAction: string,
    }
    
    Ein Beispiel vom Löschen des Bildes vor dem Drucken
    viewer.onPrintReport = (args) => {
        var page = args.report.renderedPages.getByIndex(0);
        var image = page.components.getByName("Image1");
        if (image)
            page.components.remove(image);
    }

  • onBeginExportReport

  • Das Ereignis ermöglicht die Einstellungen des Exports zu ändern oder den Bericht vor dem Export zu modifizieren.
    Dieses Ereignis wird vor dem Export vom Bericht, aber nach dem Festlegen von Export-Einstellungen, die im Dialogfenster gestellt sind, aufgerufen. Die Liste der Argumente des Ereignis-Behandlers:
    {
        sender: "Viewer",
        event: "BeginExportReport",
        report: StiReport
        
        preventDefault: boolean,
        async: boolean,
        
        action: StiExportAction,
        settings: IStiDashboardExportSettings | StiExportSettings,
        format: StiExportFormat,
        formatName: string,
        fileName: string,
        openAfterExport: boolean,
    }
    Ein Beispiel des Korrigierens der Export-Parameter:
    viewer.onBeginExportReport = (args) => {
        if (args.format == Stimulsoft.Report.StiExportFormat.Pdf)
            args.settings.imageQuality = 0.5;
    }

  • onEndExportReport

  • Das Ereignis ermöglicht selbstständig das Speichern der Datei zu realisieren.
    Dieses Ereignis wird nach dem Export, aber, vor dem Speichern vom Bericht aufgerufen. Die Liste der Argumente des Ereignis-Behandlers:
    {
        sender: "Viewer",
        event: "BeginExportReport",
        report: StiReport,
        
        preventDefault: boolean,
        async: boolean,
        
        action: StiExportAction,
        format: StiExportFormat,
        formatName: string,
        fileName: string,
        openAfterExport: boolean,
        data: string | number[]
    }
    Ein Beispiel von Veränderung des Namens der exportierten Datei:
    viewer.onEndExportReport = (args) => {
        args.fileName = "SampleFileName.txt";
    }

  • onInteraction

  • Das Ereignis wird vor dem Ausführen von der Interaktivität aufgerufen. Die Liste der Argumente des Ereignis-Behandlers:
    {
        sender: "Viewer",
        event: "Interaction",
        report: StiReport,
        
        preventDefault: boolean,
        async: boolean,
        
        action: string,
        variables,
        sortingParameters,
        collapsingParameters,
        drillDownParameters,
        filteringParameters
    }
    Ein Beispiel vom Ersetzen des Wertes der Variable:
    viewer.onInteraction = (args) => {
        if (args.action == "Variables")
            args.variables["Variable1"] = "New Value";
    }

  • onEmailReport

  • Das Ereignis ermöglicht das Senden vom exportierten Bericht per E-Mail zu realisieren.
    Das Ereignis wird vor dem Senden vom Bericht per E-Mail aufgerufen. Die Liste der Argumente des Ereignis-Behandlers:
    {
        sender: "Viewer",
        event: "EmailReport",
        report: StiReport,
    
        settings: {
            email: string;
            subject: string;
            message: string;
        },
        format: StiExportFormat,
        formatName: string,
        fileName: string,
        data: number[] | string
    }
    Um die Schaltfläche zu aktivieren, muss man den folgenden Parameter zu stellen:
    viewerOptions.toolbar.showSendEmailButton = true;
    Ein Beispiel vom E-Mail-Senden:
    viewer.onEmailReport = (args) => {
        var emailAddress = args.settings.email;
        var emailMessage = args.settings.message;
        var emailSubject = args.settings.subject;
        var emailAttachmentFileName = args.fileName;
        var emailAttachment = args.data;
    
        sendEmail(emailAddress, emailMessage, emailSubject, emailAttachmentFileName, emailAttachment);
    }

  • onDesignReport

  • Das Ereignis ermöglicht den Designer anzuzeigen und die Berichtsvorlage zu übertragen.
    Dieses Ereignis entsteht beim Klicken auf die Schaltfläche Design. Die Liste der Argumente des Ereignis-Behandlers:
    {
        sender: "Viewer",
        event: "DesignReport",
        report: StiReport
    }
    Um die Schaltfläche zu aktivieren, muss man den folgenden Parameter zu stellen:
    viewerOptions.toolbar.showDesignButton = true;
    Ein Beispiel vom Löschen des Viewers, Erstellen des Designers und Übertragung des Berichtes zum Designer:
    var viewerOptions = new Stimulsoft.Viewer.StiViewerOptions();
    viewerOptions.toolbar.showDesignButton = true;
    var viewer = new Stimulsoft.Viewer.StiViewer(viewerOptions, "StiViewer", false);
    viewer.renderHtml("content");
    
    viewer.onDesignReport = (args) => {
        var viewerDiv = document.getElementById("content");
        viewerDiv.innerHTML = "";
    
        var designerOptions = new Stimulsoft.Designer.StiDesignerOptions();
        designerOptions.appearance.fullScreenMode = true;
    
        var designer = new Stimulsoft.Designer.StiDesigner(designerOptions, "StiDesigner", false);
        designer.renderHtml("content");
        
        designer.report = args.report;
    }

  • onShowReport

  • Das Ereignis ermöglicht den Bericht vor dem Anzeigen im Viewer zu modifizieren.
    Dieses Ereignis wird vor dem Erstellen nach dem Anzeigen des Berichtes im Viewer aufgerufen. Die Liste der Argumente des Ereignis-Behandlers:
    {
        sender: "Viewer",
        event: "ShowReport",
        report: StiReport,
    
        preventDefault: boolean,
        async: boolean
    }

  • onOpenReport

  • Das Ereignis ermöglicht eigene Weise des Öffnens der Vorlagen zu realisieren.
    Dieses Ereignis wird vor dem Dialogfenster der Datei-Auswahl vom Öffnen des Berichtes und nach der Übertragung des Berichtes im Viewer. Die Liste der Argumente des Ereignis-Behandlers:
    {
        sender: "Viewer",
        event: "OpenReport",
        report: StiReport,
        
        preventDefault: boolean,
        async: boolean
    }
    Um die Schaltfläche zu aktivieren, muss man den folgenden Parameter zu stellen:
    viewerOptions.toolbar.showOpenButton = true;
    Ein Beispiel vom Unterbrechen des Aufrufens des Dialogfensters und der Übertragung von eigener Vorlage:
    viewer.onOpenedReport = (args) => {
        args.preventDefault = true;
        args.async = true;
    
        args.report = anotherReport;
        callback();
    }

  • onOpenedReport

  • Das Ereignis ermöglicht den Bericht vor der Übertragung im Viewer zu modifizieren.
    Dieses Ereignis wird nach dem Öffnen und vor der Übertragung des Berichtes im Viewer aufgerufen. Die Liste der Argumente des Ereignis-Behandlers:
    {
        sender: "Viewer",
        event: "OpenedReport",
        report: StiReport,
        
        preventDefault: boolean,
        async: boolean
    }
    Um die Schaltfläche zu aktivieren, muss man den folgenden Parameter zu stellen:
    viewerOptions.toolbar.showOpenButton = true;
    Ein Beispiel vom Unterbrechen des Öffnens des Berichtes, wenn die Eigenschaft reportAuthor nicht „Stimulsoft“ gleich:
    viewer.onOpenedReport = (args) => {
        if (args.report.reportAuthor != "Stimulsoft") {
            args.preventDefault = true;
            window.alert("report.reportAuthor == " + args.report.reportAuthor);
        }
    }
    Wenn Sie noch Fragen über Viewerereignisse haben, kontaktieren Sie uns. Im nächsten Artikel erzählen wir über die Ereignisse des Berichtsdesigners.
    By using this website, you agree to the use of cookies for analytics and personalized content. Cookies store useful information on your computer to help us improve efficiency and usability. For more information, please read the privacy policy and cookie policy.