J'ai migré nos services de reporting de la version 2008 vers une autre version serveur 2008 R2. Dans la version 2008, les rapports fonctionnent correctement sur Safari. La nouvelle version 2008 R2 les rapports n'apparaissent pas du tout. Tout ce que je vois, c'est la section des paramètres, puis le rapport est vide. Idem dans Chrome. Selon Microsoft Safari, il est pris en charge si de manière limitée. Les rapports ne sont pas complexes. En fait, j'ai créé un rapport qui ne contenait qu'une ligne pour voir s'il apparaîtrait dans Safari, mais non, ce rapport est également complètement vide. Quelqu'un a-t-il rendu les rapports SSRS visibles sur Safari? Dois-je jouer avec une sorte de paramètre de configuration?
84
Réponses:
Solution ultime (fonctionne également dans SSRS 2012!)
Ajoutez le script suivant au fichier suivant (sur le serveur 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"; } }
Remarque : comme azzlak l'a noté, le nom du div n'est pas toujours
ctl31_ctl10
. Pour SQL 2012 essayezctl32_ctl09
et pour 2008 R2 essayezctl31_ctl09
. Si cette solution ne fonctionne pas, regardez le code HTML de votre navigateur pour voir si le script a correctement fonctionné en changeant laoverflow:auto
propriété enoverflow:visible
.Solution pour le contrôle ReportViewer
Insérez dans la
.aspx
page (ou dans un.css
fichier lié , si disponible) cette ligne de style#reportViewer_ctl09 { overflow:visible !important; }
Raison
Chrome et Safari sont rendus
overflow:auto
de manière différente par rapport à IE.La page HTML produite par les rapports SSRS 2008 R2 contient un
div
qui a duoverflow:auto
style et transforme le rapport en un rapport invisible.<div id="ctl31_ctl10" style="height:100%;width:100%;overflow:auto;position:relative;">
Je peux voir les rapports sur Chrome en passant manuellement
overflow:auto
àoverflow:visible
dans la page Web produite à l'aide des outils de développement de Chrome ( F12).J'adore la solution de Tim , c'est facile et efficace.
Mais il y a toujours un problème: à chaque fois que l'utilisateur change les paramètres (mes rapports utilisent des paramètres!) AJAX actualise le div, le débordement: auto tag est réécrit, et aucun script ne le change.
Ce détail technique explique quel est le problème:
L'utilisateur einarq a suggéré cette solution :
Ainsi a écrit le script amélioré qui est montré dans la solution.
la source
ctl32_ctl09
.Incluez simplement
SizeToReportContent="true"
comme indiqué ci-dessousla source
J'utilise la version 21 de Chrome avec SQL 2008 R2 SP1 et aucun des correctifs ci-dessus n'a fonctionné pour moi. Vous trouverez ci-dessous le code qui a fonctionné, comme pour les autres réponses, j'ai ajouté ce bit de code à ajouter à "C: \ Program Files \ Microsoft SQL Server \ MSRS10_50.MSSQLSERVER \ Reporting Services \ ReportManager \ js \ ReportingServices.js" (sur le serveur SSRS):
la source
Il s'agit d'un problème connu . Le problème est qu'une balise div a le style "overflow: auto" qui n'est apparemment pas bien implémenté avec WebKit qui est utilisé par Safari et Chrome (voir la réponse d'Emanuele Greco). Je ne savais pas comment profiter de la suggestion d'Emanuele d'utiliser l'élément RS: ReportViewerHost, mais je l'ai résolu en utilisant JavaScript.
Problème
Solution
Puisque "overflow: auto" est spécifié dans l'attribut style de l'élément div avec l'ID "ctl31_ctl10", nous ne pouvons pas le remplacer dans un fichier de feuille de style, j'ai donc eu recours à JavaScript. J'ai ajouté le code suivant à "C: \ Program Files \ Microsoft SQL Server \ MSRS10_50.MSSQLSERVER \ Reporting Services \ ReportManager \ js \ ReportingServices.js"
Remarque
Il semble y avoir une solution pour SSRS 2005 que je n'ai pas essayée mais je ne pense pas qu'elle soit applicable à SSRS 2008 parce que je ne trouve pas la classe "DocMapAndReportFrame".
la source
Ma solution basée sur les idées ci-dessus.
Il n'est pas limité à un certain identifiant et vous n'avez pas besoin d'inclure une autre bibliothèque telle que jQuery.
la source
Voici la solution que j'ai utilisée pour Report Server 2008 R2
Il devrait fonctionner indépendamment de ce que le serveur de rapports produira pour une utilisation dans son attribut "id" de la table. Je ne pense pas que vous puissiez toujours supposer que ce sera "ctl31_fixedTable"
J'ai utilisé un mélange de la suggestion ci-dessus et de certaines façons de charger dynamiquement des bibliothèques jquery dans une page à partir d'un fichier javascript trouvé ici
Sur le serveur, accédez au répertoire: C: \ Program Files \ Microsoft SQL Server \ MSRS10_50.MSSQLSERVER \ Reporting Services \ ReportManager \ js
Copiez la bibliothèque jquery jquery-1.6.2.min.js dans le répertoire
Créez une copie de sauvegarde du fichier ReportingServices.js Modifiez le fichier. Et ajoutez ceci au bas de celui-ci:
la source
Vous pouvez résoudre ce problème facilement avec jQuery - et un petit hack laid :-)
J'ai une page asp.net avec un contrôle utilisateur ReportViewer.
Dans l'événement de document prêt, je lance ensuite une minuterie et recherche l'élément qui nécessite le correctif de débordement (comme dans les articles précédents):
Mieux que de supposer qu'il a un certain identifiant. Vous pouvez régler la minuterie à votre guise. Je l'ai mis à 1000 ms ici.
la source
Pour votre information, rien de ce qui précède n'a fonctionné pour moi en 2012 SP1 ... une solution simple consistait à intégrer les informations d'identification dans la source de données partagée, puis à dire à Safari de faire confiance au site du serveur SSRS. Ensuite, cela a très bien fonctionné! Il a fallu des jours pour rechercher des solutions supposées comme ci-dessus pour découvrir que la sécurité intégrée ne fonctionnera pas de manière fiable sur Safari - vous devez jouer avec le trousseau sur le mac et ne fonctionnerait toujours pas de manière fiable.
la source
La solution fournie par Emanuele a fonctionné pour moi. Je pouvais voir le rapport lorsque j'y ai accédé directement à partir du serveur, mais lorsque j'ai utilisé un contrôle ReportViewer sur ma page aspx, je n'ai pas pu voir le rapport. En inspectant le HTML rendu, j'ai trouvé un div par l'ID "ReportViewerGeneral_ctl09" ( ReportViewerGeneral est l'ID de serveur du contrôle de la visionneuse de rapports) qui avait sa propriété de débordement définie sur auto.
J'ai utilisé la procédure expliquée par Emanuele pour changer cela en visible comme suit:
la source
J'ai utilisé ça. Ajoutez une référence de script à jquery sur la page Report.aspx. Utilisez ce qui suit pour lier JQuery aux événements Microsoft. Utilisé un peu la suggestion d'Eric pour régler le débordement.
la source