Configurando o ReportViewer para renderização assíncrona
Para configurar o ReportViewer o controle de servidor Web para processamento assíncrono, você deve definir o processamento e modos de processamento. O comportamento de renderização é especificado pelo AsyncRendering propriedade no controle e o comportamento de processamento é especificada pelo ProcessingMode propriedade. A combinação dessas duas propriedades define como suas páginas ASP.NET serão renderizado.
A tabela a seguir descreve o comportamento do ReportViewer controle para a renderização diferente e modos de processamento.
Configuração de propriedade |
Modo de processamento local (classe LocalReport) |
Modo de processamento remoto (classe ServerReport) |
---|---|---|
AsyncRendering = True |
|
|
AsyncRendering = False |
|
|
Quando AsyncRendering é definida como True, postbacks ocorrerá se você assinar eventos de navegação em seu código, com exceção do evento de detalhamento. Esse evento lançará independentemente de inscrição de evento. Se a propriedade é definida como False, post faz ocorrerá se você se inscreveu para eventos ou não.
Quando o AsyncRendering está definida a True, o ReportViewer processará o relatório em um IFRAME na página. Ao usar um IFRAME, o restante da página pode carregar sem serem bloqueadas pelo ReportViewer controle.
Ambos os modos de processamento local e remoto usam um IFRAME para renderizar o relatório. No entanto, há uma diferença na forma de que ReportViewer renderiza um indicador de progresso se ele estiver habilitado. Quando um relatório é processado localmente, o indicador de progresso para o relatório não pode ser renderizado até que todo o processamento seja concluído. Quando um relatório é processado remotamente, o indicador de progresso, se ele estiver habilitado, é exibido enquanto o relatório está sendo processado no servidor.
Se você configurar o ReportViewer Web de controle de servidor para executar em modo assíncrono em um aplicativo que é escrito em XHTML, você deve seguir etapas específicas para exibir o ReportViewer controlar corretamente. Se o ReportViewer controle usa altura relativa (por exemplo, se a altura é especificada como uma porcentagem do espaço disponível), o controle recolhe uma altura de zero (0) pixels como resultado como quadros e marcas DIV renderizados em que contém tabelas em XHTML. Você pode evitar esse problema seguindo um destes procedimentos:
Definir explicitamente a altura a sobre o ReportViewer controle para um valor real em vez de uma porcentagem.
Adicione a seguinte configuração de estilo para a marca < head >: <style>html,body,form {height:100%}</style>. Forçando o HTML, body e marcas de formulário a altura máxima, o quadro usado no ReportViewer controle também aumentará a altura máxima, torná-lo visível na página.
Remova o doctype xhtml da página.
Quando o AsyncRendering está definida a False o ReportViewer processará o relatório como HTML no restante da página. Como o HTML é embutido, o restante da página será bloqueado enquanto o relatório é processado e renderizado.
Dica
Se um relatório contiver um mapa do documento e está sendo processado no modo síncrono, o mapa do documento não será exibido.
Configurações de Web.config para ReportViewer
Servidor Web do ReportViewer e Controles do Windows Forms