Freigeben über


ReportViewer-Klasse

Stellt Eigenschaften und Methoden für die clientseitige Programmierung des ReportViewer-Webserversteuerelements bereit.

Das ReportViewer-Webserversteuerelement erstellt im Clientbrowser eine Instanz dieser Klasse als Handle, über das Sie programmgesteuert mit dem clientseitigen Steuerelement interagieren können.Verwenden Sie diese Instanz, um das Verhalten des clientseitigen Steuerelements mit minimalen Postbacks zum Server anzupassen.

Namespace:Microsoft.Reporting.WebFormsClient

Erbt:Sys.Component

var v = $find(viewerId);

Member

Name

Beschreibung

exportReport-Methode

Exportiert den Bericht im angegebenen Format.

find-Methode

Durchsucht den Bericht im Berichtsbereich nach einer Zeichenfolge.

findNext-Methode

Sucht im Bericht nach dem nächsten Suchtreffer.

invokePrintDialog-Methode

Öffnet das Dialogfeld Drucken.

recalculateLayout-Methode

Berechnet das Layout für ReportViewer neu.

refreshReport-Methode

Aktualisiert den Bericht.

documentMapCollapsed-Eigenschaft

Ruft einen Boolean-Wert ab, der angibt, ob die Dokumentstruktur reduziert ist, bzw. legt diesen Wert fest.

isLoading-Eigenschaft

Ruft einen Boolean-Wert ab, der angibt, ob die Webseite ein Postback ausführt oder das clientseitige Steuerelement Inhalt lädt, bzw. legt diesen Wert fest.

promptAreaCollapsed-Eigenschaft

Ruft einen Boolean-Wert ab, der angibt, ob der Bereich für die Parametereingabeaufforderung reduziert ist, bzw. legt diesen Wert fest.

reportAreaContentType-Eigenschaft

Ruft einen Microsoft.Reporting.WebFormsClient.ReportAreaContent-Enumerationswert ab, der den aktuellen Inhaltstyp des Berichtsbereichs angibt.

reportAreaScrollPosition-Eigenschaft

Ruft ein Sys.UI.Point-Objekt ab oder legt es fest, das die Bildlaufposition des Berichtsbereichs darstellt.

zoomLevel-Eigenschaft

Ruft ein string-Element ab, das den aktuellen Zoomfaktor darstellt, bzw. legt es fest.

Hinweise

Sie erstellen nicht direkt eine Instanz der ReportViewer-Klasse.Stattdessen greifen Sie auf die ReportViewer-Instanz zu.Die ReportViewer-Instanz wird jedes Mal erstellt, wenn das Webserversteuerelement im Clientbrowser gerendert wird, und beibehalten, bis die Webseite im Browser geschlossen bzw. das Webserversteuerelement erneut gerendert wird.Wenn das ReportViewer-Webserversteuerelement innerhalb eines UpdatePanel-Steuerelements platziert wird, wird die ReportViewer-Instanz bei jeder Aktualisierung des Update-Panels im Clientbrowser durch eine Teilseitenaktualisierung verworfen und neu erstellt.

Verwenden Sie zum Zugreifen auf die ReportViewer-Instanz die Sys.Application.findComponent-Methode oder den $find-Shortcut mit der ID der ReportViewer-Instanz.Im folgenden Beispiel registriert das Snippet der ASP.NET-Seite die JavaScript-Datei ClientCode.js im ScriptManager-Steuerelement.Dann definiert die ClientCode.js-Datei eine rezoom-Methode, die mithilfe der $find-Methode und der clientseitigen ID des ReportViewer-Webserversteuerelements auf die ReportViewer-Instanz zugreift.Durch Hinzufügen von Skriptverweisen zum ScriptManager-Steuerelement wird sichergestellt, dass registrierte Skripts nach dem Laden der Microsoft AJAX-Bibliothek ausgeführt werden.

<asp:ScriptManager ID="ScriptManager1" runat="server">
    <Scripts>
        <asp:ScriptReference Path="ClientCode.js" />
    </Scripts>
</asp:ScriptManager>
<rsweb:ReportViewer ID="ReportViewer1" runat="server" ProcessingMode="Remote">
    <ServerReport ReportPath="/AdventureWorks 2008 Sample Reports/Company Sales 2008" 
        ReportServerUrl="http://<servername>/reportserver" />
</rsweb:ReportViewer>
<asp:TextBox ID="TextBox1" runat="server" onchange="rezoom(value)"></asp:TextBox>

Der Code für ClientCode.js wird unten gezeigt.Der Wert der viewerID-Variablen entspricht in der Regel der ID des Webserversteuerelements auf der ASP.NET-Seite.Im ASP.NET-Snippet ist dies "ReportViewer1".Verwenden Sie die ClientID-Eigenschaft des Webserversteuerelements, um die clientseitige ID zuverlässig abzurufen.

function rezoom(level) {
    var viewer = $find("ReportViewer1");
    if (!viewer.get_isLoading() && viewer.get_zoomLevel() != level)
        viewer.set_zoomLevel(level);
}

Von der ReportViewer-Instanz ausgelöste Ausnahmen

Wenn die Webseite ein Postback ausführt oder das clientseitige Steuerelement Inhalt lädt, löst das Zugreifen auf die Methoden oder Eigenschaften der ReportViewer-Instanz eine Ausnahme mit der folgenden Meldung aus: "Der Bericht oder die Seite wird aktualisiert.Warten Sie, bis die aktuelle Aktion abgeschlossen ist." Mit der isLoading-Eigenschaft können Sie überprüfen, ob der Bericht oder die Seite aktualisiert wird und ob Sie auf die Methoden und Eigenschaften zugreifen können.Diese Eigenschaft löst keine Ausnahme aus.

Wenn die Webseite oder das clientseitige Steuerelement kein Postback ausführt, ist es für einige Methoden erforderlich, dass ein Bericht geladen wird.Wenn kein Bericht geladen wird, löst das Aufrufen dieser Methoden eine Ausnahme mit der folgenden Meldung aus: "Der Vorgang kann nicht ausgeführt werden, weil kein Bericht geladen ist". Diese Methoden sind im Folgenden aufgeführt.Verwenden Sie die reportAreaContentType-Eigenschaft, um zu überprüfen, ob der Berichtsbereich eine Berichtsseite enthält, bevor Sie diese Methoden einsetzen.

Behandeln von Change-Ereignissen für Eigenschaften

Wenn Sie bei Änderungen einer Eigenschaft benachrichtigt werden möchten, registrieren Sie einen Ereignishandler mit dem Sys.Component.propertyChanged-Ereignis.Dies ist ein Ereignis aus der Basisklasse der ReportViewer-Instanz.Im folgenden Beispielcode wird ein Ereignis zur Erzwingung der Einschränkung des Werts der zoomLevel-Eigenschaft registriert.Sie können dem folgenden JavaScript-Code in Ihrem ScriptManager-Steuerelement einen Skriptverweis hinzufügen.

Sys.Application.add_load(function () {
    $find(viewerID).add_propertyChanged(viewerPropertyChanged);
});

function viewerPropertyChanged(sender, e) {
    if (e.get_propertyName() == "zoomLevel") {
        var viewer = $find(viewerID);
        if (!viewer.get_isLoading() && viewer.get_zoomLevel() < 20) {
            viewer.set_zoomLevel(20);
            alert("Reset zoomLevel to 20.");
        }
    }
}

Bei Eigenschaftenänderungen, die vor der add_propertyChanged-Methode erfolgen, wird der Ereignishandler nicht ausgelöst.Stellen Sie sicher, dass Sie die add_propertyChanged-Methode richtig positionieren, sodass das Ereignis wie erwartet behandelt wird.In den meisten Fällen können Sie eine Registrierung mit propertyChanged innerhalb eines Ereignishandlers für das Sys.Application.load-Ereignis durchführen, wie im Codebeispiel oben.Da das clientseitige Steuerelement aber auch Code im load-Ereignis ausführt, kann es vorkommen, dass der add_load-Handler die betreffende Eigenschaft ändert, bevor der add_load-Handler ausgeführt wird, je nachdem in welcher Reihenfolge das clientseitige AJAX-Framework die add_load-Handler ausführt.Um sicherzustellen, dass alle Eigenschaftenänderungen behandelt werden, nehmen Sie eine Registrierung mit propertyChanged in einem Ereignishandler für das Sys.Application.init-Ereignis vor.

Siehe auch

Referenz

Sys.Application.load Event

Konzepte

Microsoft.Reporting.WebFormsClient

AJAX Client Life-Cycle Events