Migrei nossos serviços de relatório da versão 2008 para outra versão de servidor 2008 R2. Na versão 2008, os relatórios funcionam bem no Safari. Na nova versão 2008 R2 os relatórios não aparecem de todo. Tudo o que vejo é a seção de parâmetros e, em seguida, o relatório está em branco. O mesmo no Chrome. De acordo com o Microsoft, o Safari é suportado de forma limitada. Os relatórios não são complexos. Na verdade, criei um relatório que só tinha uma linha para ver se ele apareceria no Safari, mas não, esse relatório também está completamente em branco. Alguém tornou os relatórios SSRS visíveis no Safari? Eu tenho que mexer com algum tipo de definição de configuração?
84
Respostas:
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, tentectl32_ctl09
e para 2008 R2, tentectl31_ctl09
. Se esta solução não funcionar, examine o HTML do seu navegador para ver se o script funcionou corretamente alterando aoverflow:auto
propriedade paraoverflow: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.A página HTML produzida pelos relatórios do SSRS 2008 R2 contém um
div
que possuioverflow: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
paraoverflow: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:
O usuário einarq sugeriu esta solução :
Então escreveu o script aprimorado que é mostrado na solução.
fonte
ctl32_ctl09
.Apenas inclua
SizeToReportContent="true"
conforme mostrado abaixofonte
Estou usando o Chrome versão 21 com SQL 2008 R2 SP1 e nenhuma das correções acima funcionou para mim. Abaixo está o código que funcionou, assim como com as outras respostas adicionei este trecho de código ao Anexo a "C: \ Arquivos de programas \ Microsoft SQL Server \ MSRS10_50.MSSQLSERVER \ Reporting Services \ ReportManager \ js \ ReportingServices.js" (em o Servidor SSRS):
fonte
Este é um problema conhecido . O problema é que uma tag div tem o estilo "overflow: auto" que aparentemente não é implementado bem com o WebKit que é usado pelo Safari e Chrome (veja a resposta de Emanuele Greco). Não sabia como aproveitar a sugestão de Emanuele de usar o elemento RS: ReportViewerHost, mas resolvi usando JavaScript.
Problema
Solução
Como "overflow: auto" é especificado no atributo style do elemento div com id "ctl31_ctl10", não podemos substituí-lo em um arquivo de folha de estilo, então recorri ao JavaScript. Anexei o seguinte código a "C: \ Arquivos de programas \ Microsoft SQL Server \ MSRS10_50.MSSQLSERVER \ Reporting Services \ ReportManager \ js \ ReportingServices.js"
Nota
Parece haver uma solução para o SSRS 2005 que eu não tentei, mas não acho que seja aplicável ao SSRS 2008 porque não consigo encontrar a classe "DocMapAndReportFrame".
fonte
Minha solução com base nas ideias acima.
Não está limitado a um determinado id e você não precisa incluir nenhuma outra biblioteca, como jQuery.
fonte
Aqui está a solução que usei para o Report Server 2008 R2
Deve funcionar independentemente do que o Report Server produzirá para uso em seu atributo "id" da tabela. Eu não acho que você sempre pode assumir que será "ctl31_fixedTable"
Eu usei uma combinação da sugestão acima e algumas maneiras de carregar dinamicamente as bibliotecas jquery em uma página a partir do arquivo javascript encontrado aqui
No servidor, vá para o diretório: C: \ Arquivos de programas \ Microsoft SQL Server \ MSRS10_50.MSSQLSERVER \ Reporting Services \ ReportManager \ js
Copie a biblioteca jquery jquery-1.6.2.min.js para o diretório
Crie uma cópia de backup do arquivo ReportingServices.js Edite o arquivo. E anexe isso na parte inferior:
fonte
Você pode corrigir isso facilmente com jQuery - e um pequeno hack feio :-)
Eu tenho uma página asp.net com um controle de usuário ReportViewer.
No evento de documento pronto, inicio um cronômetro e procuro o elemento que precisa da correção de estouro (como postagens anteriores):
Melhor do que assumir que tem um certo id. Você pode ajustar o cronômetro para o que quiser. Eu o defino em 1000 ms aqui.
fonte
Para sua informação - nenhuma das opções acima funcionou para mim em 2012 SP1 ... uma solução simples era incorporar credenciais na fonte de dados compartilhada e então dizer ao Safari para confiar no site do servidor SSRS. Então funcionou muito bem! Demorou dias perseguindo supostas soluções como acima apenas para descobrir que a segurança integrada não funcionaria de forma confiável no Safari - você tem que mexer com as chaves no mac e então ainda não funcionaria de forma confiável.
fonte
A solução fornecida pela Emanuele funcionou para mim. Pude ver o relatório quando o acessei diretamente do servidor, mas quando usei um controle ReportViewer na minha página aspx, não consegui ver o relatório. Ao inspecionar o HTML renderizado, encontrei um div pelo id "ReportViewerGeneral_ctl09" ( ReportViewerGeneral é o id do servidor do controle do visualizador de relatório) que tinha sua propriedade de estouro definida como auto.
Usei o procedimento explicado por Emanuele para mudar isso para visível da seguinte forma:
fonte
Eu usei isso. Adicione uma referência de script a jquery na página Report.aspx. Use o seguinte para vincular JQuery aos eventos da Microsoft. Usei um pouco da sugestão de Eric para definir o estouro.
fonte