Solução final (funciona no SSRS 2012 também!)
Anexe o seguinte script ao seguinte arquivo (no servidor SSRS)
C:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\ReportManager\js\ReportingServices.js
function pageLoad() {
var element = document.getElementById("ctl31_ctl10");
if (element)
{
element.style.overflow = "visible";
}
}
Observação : como azzlak observou, o nome do div nem sempre ctl31_ctl10
. Para SQL 2012, tente ctl32_ctl09
e para 2008 R2, tente ctl31_ctl09
. Se esta solução não funcionar, examine o HTML do seu navegador para ver se o script funcionou corretamente alterando a overflow:auto
propriedade para overflow:visible
.
Solução para controle ReportViewer
Insira na .aspx
página (ou em um .css
arquivo vinculado , se disponível) esta linha de estilo
#reportViewer_ctl09 {
overflow:visible !important;
}
Razão
O Chrome e o Safari são renderizados de overflow:auto
maneiras diferentes em relação ao IE.
SSRS HTML é QuirksMode HTML e depende de bugs do IE 5.5. Navegadores não-IE não têm o modo quirks do IE e, portanto, renderizam o HTML corretamente
A página HTML produzida pelos relatórios do SSRS 2008 R2 contém um div
que possui overflow:auto
estilo e transforma o relatório em um relatório invisível.
<div id="ctl31_ctl10" style="height:100%;width:100%;overflow:auto;position:relative;">
Posso ver relatórios no Chrome mudando manualmente overflow:auto
para overflow:visible
na página da web produzida usando as Ferramentas de Desenvolvimento do Chrome ( F12).
Adoro a solução do Tim , é fácil e funciona.
Mas ainda há um problema: sempre que o usuário altera os parâmetros (meus relatórios usam parâmetros!), O AJAX atualiza o div, a tag overflow: auto é reescrita e nenhum script a altera.
Este detalhe de nota técnica explica qual é o problema:
Isso ocorre porque em uma página construída com painéis AJAX, apenas os painéis AJAX mudam de estado, sem atualizar a página inteira. Consequentemente, os OnLoad
eventos que você aplicou na <body>
tag são disparados apenas uma vez: a primeira vez que sua página é carregada. Depois disso, a alteração de qualquer um dos painéis AJAX não acionará mais esses eventos.
O usuário einarq sugeriu esta solução :
Outra opção é renomear sua função para pageLoad. Quaisquer funções com este nome serão chamadas automaticamente pelo asp.net ajax se existir na página, também após cada atualização parcial. Se você fizer isso, você também pode remover o atributo onload da tag body
Então escreveu o script aprimorado que é mostrado na solução.