Partager via


Classe ReportViewer

Fournit des propriétés et des méthodes pour la programmation côté client du contrôle serveur Web ReportViewer.

Le contrôle serveur Web ReportViewer crée une instance de cette classe dans le navigateur client pour vous permettre d'interagir par programme avec le contrôle côté client. Utilisez cette instance pour personnaliser le comportement du contrôle côté client avec le moins de publications possible sur le serveur.

Espace de noms : Microsoft.Reporting.WebFormsClient

Hérite de : Sys.Component

 var v = $find(viewerId);

Membres

Nom

Description

Méthode exportReport

Exporte le rapport au format spécifié.

Méthode find

Recherche une chaîne dans le rapport actuel dans la zone de rapport.

Méthode findNext

Recherche la correspondance de recherche suivante dans le rapport.

Méthode invokePrintDialog

Lance la boîte de dialogue Imprimer.

Méthode recalculateLayout

Recalcule la disposition du ReportViewer.

Méthode refreshReport

Actualise le rapport.

Propriété documentMapCollapsed

Obtient ou définit une valeur Boolean qui indique si l'explorateur de documents est réduit.

Propriété isLoading

Obtient une valeur Boolean qui indique si la page Web effectue une publication ou si le contrôle côté client charge du contenu.

Propriété promptAreaCollapsed

Obtient ou définit une valeur Boolean qui indique si la zone de message relatif au paramètre est réduite.

Propriété reportAreaContentType

Obtient une valeur d'énumération Microsoft.Reporting.WebFormsClient.ReportAreaContent qui indique le type de contenu actuel de la zone de rapport.

Propriété reportAreaScrollPosition

Obtient ou définit un objet Sys.UI.Point qui représente la position de défilement de la zone de rapport.

Propriété zoomLevel

Obtient ou définit une valeur string qui représente le niveau de zoom actuel.

Notes

Vous ne créez pas une instance de la classe ReportViewer directement. Vous accédez plutôt à l'instance ReportViewer. L'instance ReportViewer est créée chaque fois que le contrôle serveur Web est rendu dans le navigateur client et persiste tant que la page Web est ouverte dans le navigateur et que le contrôle serveur Web n'est pas rendu. Si le contrôle serveur Web ReportViewer est placé à l'intérieur d'un contrôle UpdatePanel, l'instance ReportViewer est supprimée et recréée chaque fois que le panneau de mise à jour est actualisé dans le navigateur client par une mise à jour de page partielle.

Pour accéder à l'instance ReportViewer, utilisez la méthode Sys.Application.findComponent ou le raccourci $find avec l'ID de l'instance ReportViewer. Par exemple, l'extrait de page ASP.NET ci-dessous inscrit le fichier JavaScript, ClientCode.js, dans le contrôle ScriptManager. Le fichier ClientCode.js définit ensuite une méthode rezoom qui utilise la méthode $find pour accéder à l'instance ReportViewer à l'aide de l'ID côté client du contrôle serveur Web ReportViewer. L'ajout de références de script au contrôle ScriptManager garantit que les scripts inscrits sont exécutés après le chargement de Microsoft AJAX Library.

<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>

Le code pour ClientCode.js est affiché ci-dessous. Dans la plupart des cas, la valeur de la variable viewerID est l'ID du contrôle serveur Web dans la page ASP.NET. Dans l'extrait ASP.NET, il s'agit de ReportViewer1. Vous devez utiliser la propriété ClientID du contrôle serveur Web pour obtenir l'ID côté client de façon fiable.

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

Exceptions levées par l'instance ReportViewer

Lorsque la page Web effectue une publication ou que le contrôle côté client charge du contenu, l'accès aux méthodes ou propriétés de l'instance ReportViewer provoquera une exception avec le message : « Le rapport ou la page est en cours de mise à jour. Attendez que l'action actuelle se termine ». La propriété isLoading peut être utilisée pour vérifier si le rapport ou la page est en cours de mise à jour et si vous pouvez accéder aux méthodes et propriétés. Cette propriété ne lève pas d'exception.

Lorsque la page Web ou le contrôle côté client n'effectue pas de publication, un ensemble de méthodes nécessite le chargement d'un rapport. Si aucun rapport n'est chargé, l'appel de ces méthodes provoquera une exception avec le message : « L'opération ne peut pas être effectuée, car aucun rapport n'est chargé ». Ces méthodes sont répertoriées ci-dessous. Utilisez la propriété reportAreaContentType pour vérifier si la zone de rapport contient une page de rapport avant d'utiliser ces méthodes.

Gestion des événements de modification de propriété

Si vous souhaitez être averti lorsqu'une propriété est modifiée, inscrivez un gestionnaire d'événements avec l'événement Sys.Component.propertyChanged. Il s'agit d'un événement de la classe de base de l'instance ReportViewer. Par exemple, le code suivant inscrit un événement pour appliquer une restriction sur la valeur de la propriété zoomLevel. Vous pouvez ajouter une référence de script au code JavaScript suivant dans votre contrôle ScriptManager.

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.");
        }
    }
}

Les modifications de propriétés qui se produisent avant la méthode add_propertyChanged n'appellent pas le gestionnaire d'événements. Assurez-vous de placer correctement la méthode add_propertyChanged afin que l'événement soit géré comme prévu. Pour la plupart des scénarios, vous pouvez inscrire l'événement Sys.Application.load auprès de propertyChanged à l'intérieur d'un gestionnaire d'événements, comme l'exemple de code ci-dessus. Toutefois, étant donné que le contrôle côté client exécute également le code dans l'événement load, son gestionnaire add_load peut modifier la propriété qui vous intéresse avant l'exécution de votre gestionnaire add_load, selon l'ordre dans lequel l'infrastructure côté client AJAX exécute les gestionnaires add_load. Pour garantir que toutes les modifications de propriétés sont gérées, vous pouvez inscrire l'événement Sys.Application.init auprès de propertyChanged dans un gestionnaire d'événements.

Voir aussi

Concepts

Microsoft.Reporting.WebFormsClient

Autres ressources

AJAX Client Life-Cycle Events

Sys.Application.load Event