Classe Microsoft.Reporting.WebFormsClient.ReportViewer

Fornisce proprietà e metodi per la programmazione lato client del controllo server Web ReportViewer.

Il controllo server Web ReportViewer crea un'istanza di questa classe nel browser client come handle per consentire l'interazione a livello di codice con il controllo lato client. Utilizzare questa istanza per personalizzare il comportamento del controllo lato client con postback minimi al server.

Spazio dei nomi:Microsoft.Reporting.WebFormsClient

Eredita:Sys.Component

Sintassi

var v = $find(viewerId);

Membri

Nome

Descrizione

Metodo Microsoft.Reporting.WebFormsClient.ReportViewer

Esporta il rapporto nel formato specificato.

Metodo Microsoft.Reporting.WebFormsClient.ReportViewer.find

Cerca una stringa nel rapporto corrente nell'area del rapporto.

Metodo Microsoft.Reporting.WebFormsClient.ReportViewer.findNext

Trova il successivo risultato di ricerca nel rapporto.

Metodo Microsoft.Reporting.WebFormsClient.ReportViewer.invokePrintDialog

Avvia la finestra di dialogo Stampa.

Metodo Microsoft.Reporting.WebFormsClient.ReportViewer.recalculateLayout

Ricalcola il layout di ReportViewer.

Metodo Microsoft.Reporting.WebFormsClient.ReportViewer.refreshReport

Aggiorna il rapporto.

Proprietà Microsoft.Reporting.WebFormsClient.ReportViewer.documentMapCollapsed

Ottiene o imposta un valore Boolean che indica se la mappa documento è compressa.

Proprietà Microsoft.Reporting.WebFormsClient.ReportViewer.isLoading

Ottiene un valore Boolean che indica se la pagina Web sta eseguendo un postback o se il controllo lato client sta caricando contenuto.

Proprietà Microsoft.Reporting.WebFormsClient.ReportViewer.promptAreaCollapsed

Ottiene o imposta un valore Boolean che indica se l'area dei messaggi di richiesta per i parametri è compressa.

Proprietà Microsoft.Reporting.WebFormsClient.ReportViewer.reportAreaContentType

Ottiene un valore dell'enumerazione Microsoft.Reporting.WebFormsClient.ReportAreaContent che indica il tipo di contenuto corrente dell'area del rapporto.

Proprietà Microsoft.Reporting.WebFormsClient.ReportViewer.reportAreaScrollPosition

Ottiene o imposta un oggetto Sys.UI.Point che rappresenta la posizione di scorrimento dell'area del rapporto.

Proprietà Microsoft.Reporting.WebFormsClient.ReportViewer.zoomLevel

Ottiene o imposta un valore string che rappresenta il livello di zoom corrente.

Osservazioni

Non è possibile creare un'istanza della classe ReportViewer direttamente. È invece necessario accedere all'istanza di ReportViewer. L'istanza di ReportViewer viene creata ogni volta che viene eseguito il rendering del controllo server Web nel browser client e viene mantenuta fino a quando la pagina Web è aperta nel browser e non viene eseguito di nuovo il rendering del controllo server Web. Se il controllo server Web ReportViewer viene inserito in un controllo UpdatePanel, l'istanza di ReportViewer viene eliminata e ricreata ogni volta che il pannello di aggiornamento viene aggiornato nel browser client da un aggiornamento parziale della pagina.

Per accedere all'istanza di ReportViewer, utilizzare il metodo Sys.Application.findComponent o il collegamento $find con l'ID dell'istanza di ReportViewer. Il frammento di pagina ASP.NET seguente consente, ad esempio, di registrare il file JavaScript, ClientCode.js, nel controllo ScriptManager. Il file ClientCode.js definisce quindi il metodo rezoom che utilizza il metodo $find per accedere all'istanza di ReportViewer utilizzando l'ID lato client del controllo server Web ReportViewer. L'aggiunta di riferimenti a script al controllo ScriptManager consente di garantire che gli script registrati vengano eseguiti dopo il caricamento di 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>

Il codice per ClientCode.js è illustrato di seguito. Nella maggior parte dei casi, il valore della variabile viewerID è l'ID del controllo server Web nella pagina ASP.NET. Nel frammento ASP.NET, si tratta di "ReportViewer1". Per ottenere in modo affidabile l'ID lato client, utilizzare la proprietà ClientID del controllo server Web.

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

Eccezioni generate dall'istanza di ReportViewer

Quando la pagina Web esegue un postback o il controllo lato client carica contenuto, l'accesso ai metodi o alle proprietà dell'istanza di ReportViewer genera un'eccezione con un messaggio indicante che è in corso l'aggiornamento del rapporto o della pagina e che è necessario attendere il completamento dell'operazione corrente. È possibile utilizzare la proprietà isLoading per controllare se si sta aggiornando il rapporto o la pagina e se è possibile accedere ai metodi e alle proprietà. Questa proprietà non genera un'eccezione.

Quando la pagina Web o il controllo lato client non esegue un postback, un set di metodi richiede il caricamento di un rapporto. Se non viene caricato alcun rapporto, richiamando tali metodi viene generata un'eccezione con un messaggio che indica che non è possibile eseguire l'operazione in quanto non vi è alcun rapporto caricato. Questi metodi sono elencati di seguito. Prima di utilizzare questi metodi, utilizzare la proprietà reportAreaContentType per controllare se l'area del rapporto contiene una pagina del rapporto.

Gestione degli eventi di modifica delle proprietà

Se si desidera ricevere una notifica quando viene modificata una proprietà, registrare un gestore eventi con l'evento Sys.Component.propertyChanged. Questo evento fa parte della classe di base dell'istanza di ReportViewer. Nel codice seguente viene ad esempio registrato un evento per applicare una restrizione sul valore della proprietà zoomLevel. È possibile aggiungere un riferimento a script al codice JavaScript seguente nel controllo 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.");
        }
    }
}

Le modifiche delle proprietà eseguite prima del metodo add_propertyChanged non richiamano il gestore eventi. Assicurarsi di posizionare correttamente il metodo add_propertyChanged in modo che l'evento venga gestito come previsto. Per la maggior parte degli scenari, è possibile eseguire la registrazione con propertyChanged in un gestore eventi per l'evento Sys.Application.load, come illustrato nell'esempio di codice precedente. Poiché, tuttavia, il controllo lato client comporta anche l'esecuzione di codice nell'evento load, il relativo gestore add_load può modificare la proprietà desiderata prima dell'esecuzione del gestore add_load, a seconda dell'ordine con cui il framework AJAX esegue i gestori add_load. Per fare in modo che vengano gestite tutte le modifiche delle proprietà, è possibile eseguire la registrazione con propertyChanged in un gestore eventi per l'evento Sys.Application.init.

Vedere anche

Concetti

Spazio dei nomi Microsoft.Reporting.WebFormsClient

Altre risorse

AJAX Client Life-Cycle Events

Sys.Application.load Event