Heute enden wir die Artikelserie über die Ereignisse im Berichtsgenerator für JavaScript-Anwendungen. Wir haben schon über die Berichts- und Viewerereignisse geschrieben, und in diesem Artikel lernen wir mehr über die Designerereignisse.

Die Designerereignisse

  • 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: "Designer",
        report: StiReport,
    
        preventDefault: boolean,
        async: boolean,
        
        variables: []
    }
    Ein Beispiel des Ersetzens vom Wert in der Berichtsvariablen:
    designer.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: "Designer",
        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:
    designer.onBeginProcessData = (args) => {
        if (args.database == "MySQL")
            args.connectionString = "new connection string";
    }
    Und auch ein Beispiel von eigener Umsetzung des Erhaltens von Daten:
    designer.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: "Designer",
        event: "EndProcessData",
        report: StiReport,
    
        command: string,
        dataSource: string,
        connection: string,
        database: string,
    
        result: DataSet|any
    }
    Ein Beispiel des Korrigierens der Daten vom Adapter:
    designer.onEndProcessData = (args) => {
        if (args.command == "ExecuteQuery" && args.dataSource == "Categories")
            args.result.rows.push(rowData) ;
    
        // https://github.com/stimulsoft/DataAdapters.JS/
    }

  • onCreateReport

  • Dieses Ereignis ermöglicht den neuen Bericht vor der Zuweisung dem Designer zu modifizieren, und wird direkt vor der Zuweisung neuer Vorlage dem Designer aufgerufen. Die Liste der Argumente des Ereignis-Behandlers:
    {
        sender: "Designer",
        event: "CreateReport",
        report: StiReport,
    
        preventDefault: boolean,
        async: boolean,
    
        isWizardUsed: boolean
    
    }
    Ein Beispiel des Hinzufügens von JSON zu neuer Vorlage:
    designer.onCreateReport = (args) => {
        var report = args.report;
    
        var database = new Stimulsoft.Report.Dictionary.StiJsonDatabase("DemoData", "http://localhost/Demo.json");
        report.dictionary.databases.add(database);
        report.dictionary.synchronize();
    }

  • onOpenReport

  • Dieses Ereignis ermöglicht seine eigene Drucken-Weise des Öffnens der Vorlagen zu realisieren, und wird vor dem Dialogfenster der Datei-Auswahl vom Öffnen des Berichtes aufgerufen. Die Liste der Argumente des Ereignis-Behandlers:
    {
        sender: "Designer",
        event: "OpenReport",
        report: StiReport,
    
        preventDefault: boolean,
        async: boolean
    }
    Ein Beispiel des Unterbrechens des Aufrufes vom Dialogfenster und der Weitergabe von eigener Vorlage:
    designer.onOpenReport = (args, callback) => {
        args.preventDefault = true;
        args.async = true;
    
        args.report = anotherReport;
        callback();
    }

  • onOpenedReport

  • Dieses Ereignis ermöglicht den geöffneten Bericht vor der Zuweisung dem Designer zu modifizieren, und wird nach dem Öffnen vom Bericht und vor der Zuweisung dem Designer aufgerufen. Die Liste der Argumente des Ereignis-Behandlers:
    {
        sender: "Designer",
        event: "OpenedReport",
        report: StiReport,
    
        preventDefault: boolean,
        async: boolean
    }
    Ein Beispiel des Hinzufügens von Ressource in die Berichtsvorlage im asynchronen Modus:
    designer.onOpenedReport = (args, callback) => {
        args.async = true;
    
        var xhr = new XMLHttpRequest();
        xhr.open('GET', "Url to image");
    
        xhr.onload = function () {
    	var imageData = xhr.response;
    
    	var resource = new Stimulsoft.Report.Dictionary.StiResource("ImageName");
    	resource.content = imageData;
    	args.report.dictionary.resources.add(resource);
    
    	callback();
        };
    
        xhr.send();
    }

  • onSaveReport

  • Dieses Ereignis ermöglicht den Bericht vor dem Speichern zu modifizieren oder seine eigene Speichern-Weise zu realisieren.
    Das Ereignis wird nach dem Drucken auf die Schaltfläche Speichern und vor dem Speichern aufgerufen. Die Liste der Argumente des Ereignis-Behandlers:
    {
        sender: "Designer",
        event: "SaveReport",
        report: StiReport,
    
        preventDefault: boolean,
        async: boolean,
    
        fileName: string,
        autoSave: boolean
    }
    Ein Beispiel des Deaktivierens vom Speichern:
    designer.onSaveReport = (args, callback) => {
        args.preventDefault = true;
        var jsonString = args.report.saveToJsonString();
        // save report
    }
    Ein Beispiel des Entfernens von Ressourcen aus der Vorlage:
    designer.onSaveReport = (args, callback) => {
    	var report = args.report.clone();
    	report.dictionary.resources.clear();
    	args.report = report;
    }

  • onSaveAsReport

  • Dieses Ereignis ermöglicht den Bericht vor dem Speichern zu modifizieren oder seine eigene Speichern-Weise zu realisieren.
    Das Ereignis wird nach dem Drücken auf die Schaltfläche Speichern als und vor dem Speichern aufgerufen. Die Liste der Argumente des Ereignis-Behandlers:
    {
        sender: "Designer",
        event: "SaveAsReport",
        report: StiReport,
    
        preventDefault: boolean,
        async: boolean,
    
        fileName: string,
        autoSave: boolean
    }
    Ein Beispiel des Deaktivierens vom Speichern:
    designer.onSaveAsReport = (args, callback) => {
        args.preventDefault = true;
        var jsonString = args.report.saveToJsonString();
        // save report
    }
    Ein Beispiel des Entfernens von Ressourcen aus der Vorlage:
    designer.onSaveAsReport = (args, callback) => {
        var report = args.report.clone();
        report.dictionary.resources.clear();
        args.report = report;
    }

  • onPreviewReport

  • Dieses Ereignis ermöglicht den Bericht vor dem Anzeigen zu modifizieren, und wird vor dem Anzeigen der Vorlage in Vorschau aufgerufen. Die Liste der Argumente des Ereignis-Behandlers:
    {
        sender: "Designer",
        event: "PreviewReport",
        report: StiReport
    
        preventDefault: boolean,
        async: boolean,
    
        viewer: StiViewer
    }
    Ein Beispiel der Veränderung der Eigenschaft reportName bei report:
    designer.onPreviewReport = (args) => {
        var report = args.report;
        report.reportName = "Changed Report Name";
    }

  • onExit

  • Dieses Ereignis ermöglicht das Schließen vom Designer zu realisieren, und wird nach dem Drücken auf die Schaltfläche Abmelden im File Menu aufgerufen.
    Um die Schaltfläche zu aktivieren, muss man den folgenden Parameter zu stellen:
    designerOptions.toolbar.showFileMenuExit = true
    Ein Beispiel des Entfernens von div mit dem Designer aus der Seite:
    var designerOptions = new Stimulsoft.Designer.StiDesignerOptions();
    designerOptions.toolbar.showFileMenuExit = true;
    
    var designer = new Stimulsoft.Designer.StiDesigner(designerOptions, "StiDesigner", false);
    designer.renderHtml("content");
    
    designer.onExit = () => {
        var designerDiv = document.getElementById("content");
        designerDiv.parentNode.removeChild(designerDiv);
    }
    Wenn Sie Fragen haben, kontaktieren Sie uns.
    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.