Configurazione di ReportViewer per il rendering asincrono
Per configurare il controllo del server Web ReportViewer per il rendering asincrono è necessario impostare le modalità di elaborazione e rendering. Il comportamento di rendering è specificato dalla proprietà AsyncRendering del controllo, mentre il comportamento di elaborazione è specificato dalla proprietà ProcessingMode. La combinazione di queste due proprietà definisce la modalità di rendering delle pagine ASP.NET.
Nella tabella seguente è illustrato il comportamento del controllo ReportViewer in presenza delle diverse modalità di elaborazione e rendering.
Impostazione delle proprietà |
Modalità di elaborazione locale (classe LocalReport) |
Modalità di elaborazione remota (classe ServerReport) |
---|---|---|
AsyncRendering = True |
|
|
AsyncRendering = False |
|
|
Quando AsyncRendering è impostato su True, si verificano postback se si sottoscrivono eventi di navigazione nel codice, ad eccezione dell'evento di drill-through che esegue il postback a prescindere dalla sottoscrizione all'evento. Se la proprietà è impostata su False, i postback si verificano se sono stati sottoscritti eventi.
Modalità asincrona
Quando la proprietà AsyncRendering è impostata su True, ReportViewer il rendering del rapporto verrà eseguito all'interno di un IFRAME della pagina. L'IFRAME consente al resto della pagina di essere caricato senza venire bloccato dal controllo ReportViewer.
Entrambe le modalità di elaborazione locale e remota utilizzano un IFRAME per il rendering del rapporto. Esiste tuttavia una differenza nel modo in cui ReportViewer esegue il rendering di un indicatore di avanzamento eventualmente abilitato. Quando un rapporto è elaborato localmente, il rendering del relativo indicatore di avanzamento non può essere eseguito fino al completamento dell'elaborazione. Quando un rapporto è elaborato in remoto, il rendering dell'indicatore di avanzamento eventualmente abilitato viene eseguito durante l'elaborazione del rapporto sul server.
Considerazioni relative a XHTML e al controllo del server Web ReportViewer
Se si configura l'esecuzione in modalità asincrona del controllo del server Web ReportViewer in un'applicazione scritta in XHTML, è necessario attenersi a procedure specifiche per visualizzare correttamente il controllo ReportViewer. Se nel controllo ReportViewer viene utilizzata l'altezza relativa (se ad esempio l'altezza viene specificata in percentuale rispetto allo spazio disponibile), il controllo viene compresso a un'altezza pari a zero (0) pixel in seguito al rendering dei frame e dei tag DIV nelle relative tabelle contenitore nel formato XHTML. Per ovviare a questo problema, utilizzare una delle soluzioni seguenti:
Impostare in modo esplicito l'altezza nel controllo ReportViewer specificando un valore effettivo anziché percentuale.
Aggiungere l'impostazione di stile seguente al tag<head>: <style>html,body,form {height:100%}</style>. Se si forzano i tag HTML, body e form impostandoli sull'altezza massima, anche l'altezza del frame utilizzato nel controllo ReportViewer risulterà pari a quella massima e il controllo sarà visibile nella pagina.
Rimuovere la dichiarazione doctype xhtml dalla pagina.
Modalità sincrona
Quando la proprietà AsyncRendering è impostata su False, il rendering del rapporto sarà eseguito da ReportViewer in formato HTML inline nel resto della pagina. Siccome il formato HTML è inline, il resto della pagina sarà bloccato durante l'elaborazione e il rendering del rapporto.
Nota
Se un rapporto contiene una mappa del documento e viene eseguito il rendering in modalità sincrona, la mappa del documento non sarà visualizzata.
Vedere anche
Riferimenti
Concetti
Impostazioni di Web.config per ReportViewer
Controlli del server Web e Windows Form di ReportViewer