Classe Microsoft.Reporting.WebFormsClient.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
Syntaxe
var v = $find(viewerId);
Membres
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.
Méthode Microsoft.Reporting.WebFormsClient.ReportViewer.invokePrintDialog
Méthode Microsoft.Reporting.WebFormsClient.ReportViewer.exportReport
Méthode Microsoft.Reporting.WebFormsClient.ReportViewer.find
Méthode Microsoft.Reporting.WebFormsClient.ReportViewer.findNext
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
Espace de noms Microsoft.Reporting.WebFormsClient