Mam kilka prostych raportów w programie SSRS 2008 R2
, ale nie wyświetlą się one w ogóle w Safari lub Chrome. Według serwisu Microsoft Books Online te przeglądarki są obsługiwane w ograniczonym zakresie. Jednak nic nie widzę po zakończeniu zegara „Ładowanie” danych. Pasek parametrów i sekcja nawigacji okruchów chleba u góry strony są tam dostępne. Mogę również zapisywać / eksportować do dowolnego formatu w Safari i Chrome. Po prostu nie wyświetli samej sekcji raportu, która jest po prostu pusta.
Czy mam używać certyfikatów i zabezpieczonych połączeń (obecnie nie skonfigurowano protokołu HTTPS, tylko HTTP)? Czy są jakieś konfiguracje po stronie serwera, które należy poprawić? Czy ktoś odniósł sukces, wyświetlając JAKIEKOLWIEK raporty w Safari / Chrome przy użyciu poprzednich wersji SSRS (2005)?
Używam Safari 5.0.4
i Chrome 10.0.648.151
. Wiem, że te dwie przeglądarki są podobne do tego, że obie są oparte na WebKit .
Raport jest pomyślnie renderowany w przeglądarce Internet Explorer 8 (oczywiście) i Firefox 4.0.
Byłbym wdzięczny, gdyby ktoś mógł rzucić na to trochę światła.
Odpowiedzi:
Ostateczne rozwiązanie (działa również w SSRS 2012!)
Dołącz następujący skrypt do „ C: \ Program Files \ Microsoft SQL Server \ MSRS10_50.MSSQLSERVER \ Reporting Services \ ReportManager \ js \ ReportingServices.js ” (na serwerze SSRS):
Właściwie nie wiem, czy nazwa div jest zawsze
ctl31_ctl10
: w moim przypadku tak jest (zamiast tego znaleziono azzlak w SQL Server 2012ctl32_ctl09
).Jeśli to rozwiązanie nie działa, spójrz na kod HTML z przeglądarki, aby sprawdzić, czy skrypt zadziałał poprawnie, zmieniając właściwość overflow: auto na overflow: visible .
Rozwiązanie dla kontroli ReportViewer
Wstaw tę linię stylu na
.aspx
stronę (lub do połączonego.css
pliku, jeśli jest dostępny):Powód
Przepełnienie renderowania w Chrome i Safari : automatycznie w inny sposób niż w Internet Explorerze.
Strona HTML utworzona przez raporty SSRS 2008 R2 zawiera element div, który ma przepełnienie: styl automatyczny i zamienia raport w niewidoczny raport.
Ręczna zmiana (za pomocą okna debugowania Chrome) ostateczny przepełnienie HTML : auto w przepełnieniu: widoczne widzę raporty w Chrome.
Uwielbiam rozwiązanie Tima ; to jest łatwe i działa.
Ale wciąż jest problem: za każdym razem, gdy użytkownik zmienia parametry (moje raporty używają parametrów!) AJAX odświeża div, przepełnienie: auto tag jest przepisywane i żaden skrypt go nie zmienia. Ten szczegół techniczny wyjaśnia, na czym polega problem.
Pan einarq zasugerował mi tutaj rozwiązanie .
Wszelkie funkcje o tej nazwie będą wywoływane automatycznie przez ASP.NET Ajax, jeśli istnieją na stronie, również po każdej częściowej aktualizacji. Jeśli to zrobisz, możesz również usunąć atrybut onload z tagu body
Napisałem więc ulepszony skrypt, który jest pokazany w rozwiązaniu.
źródło
Rozwiązanie oparte na CSS
Udało mi się dodać następujące elementy do arkusza stylów usług Reporting Services i naprawiłem to dla mnie w Chrome.
Zastrzeżenie: to nie jest dokładnie testowane pod kątem zgodności z różnymi przeglądarkami.
Dodaj to na początku
ReportingServices.css
pliku.Dla mnie ten plik znajduje się pod adresem:
C:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\ReportManager\Styles\ReportingServices.css
źródło
To znany problem . Problem polega na tym, że znacznik div ma styl „overflow: auto”, który najwyraźniej nie jest realizowany również z WebKit, który jest używany przez Safari i Chrome (patrz Emanuele GRECO odpowiedź ). Nie wiedziałem, jak skorzystać z sugestii Emanuele, aby użyć elementu RS: ReportViewerHost, ale rozwiązałem to za pomocą JavaScript.
Problem
Rozwiązanie
Ponieważ „overflow: auto” jest określony w atrybucie stylu elementu div o identyfikatorze „ctl31_ctl10”, nie możemy go zastąpić w pliku arkusza stylów, więc zdecydowałem się na JavaScript. Dodałem następujący kod do „C: \ Program Files \ Microsoft SQL Server \ MSRS10_50.MSSQLSERVER \ Reporting Services \ ReportManager \ js \ ReportingServices.js”
Uwaga
Wydaje się, że istnieje rozwiązanie dla SSRS 2005 , którego nie próbowałem, ale nie sądzę, aby miało ono zastosowanie do SSRS 2008, ponieważ nie mogę znaleźć klasy „DocMapAndReportFrame”.
źródło
Rozwiązanie systemowe oparte na CSS
Nie wymaga to żadnych ramek JavaScript ani Ajax ani żadnego innego opakowania. Został przetestowany w przeglądarce Internet Explorer, Firefox, Safari i Chrome.
Można to naprawić na poziomie arkusza stylów na serwerze raportów.
Najpierw przejdź do katalogu, w którym są zainstalowane usługi raportowania, w moim przypadku ( SQL Server 2012 SP1) jest to:
W tym katalogu znajdziesz plik o nazwie reportserver.config.
Zobacz Dostosowywanie arkuszy stylów dla przeglądarki HTML i Menedżera raportów .
W tym pliku wstaw pojedynczą linię XML, taką jak (z powyższego dokumentu):
Zapisz to.
W powyższym linku nie mówią ci, że ten wpis całkowicie zastępuje domyślny arkusz stylów. Moje pierwsze próby zmuszenia raportów do renderowania działały przez dodanie arkusza stylów div, wszystko inne było zepsute. Kiedy zorientowałem się, że ta edycja pliku reporserver.config nie została rozszerzona, ale faktycznie zastępuje domyślny arkusz stylów, skopiowałem do domyślnego arkusza stylów i wszystko zaczęło działać.
Następnie przejdź do katalogu Styles (
C:\Program Files\Microsoft SQL Server\MSRS11.MSSQLSERVER\Reporting Services\ReportServer\Styles
).Utwórz kopię pliku o nazwie SP_Full.css i nazwij kopię SafariChromeFix.css. W tym momencie SafariChromeFix.css powinno być identyczne z SP_Full.css.
Edytuj SafariChromeFix.css i dodaj następujące wiersze u góry:
Zapisz to.
Po zapisaniu wszystkie istniejące raporty dotyczące tego wystąpienia usług Reporting Services będą renderowane we wszystkich przeglądarkach, w tym w Chrome i Safari.
Proszę zanotować:
Jest nie tylko możliwe, ale bardzo prawdopodobne, że reporterserver.config zostanie nadpisany aktualizacjami usług raportowania, więc
<HTMLViewerStyleSheet>SafariChrome</HTMLViewerStyleSheet>
z czasem może być konieczne dodanie do niego tagu.Daje nam to również miejsce do włamania się do domyślnego arkusza stylów i wprowadzenia wielu innych niestandardowych zmian, zaczynając od czegoś, co już działa. A ponieważ nie jest to domyślny arkusz stylów, Twój nowy niestandardowy plik CSS nie zostanie nadpisany podczas uaktualnień i poprawek.
źródło
W moim przypadku naruszającym DIV jest „ctl31_ctl09”, więc jeśli powyższe rozwiązanie nie działa, spróbuj zmienić
var element = document.getElementById("ctl31_ctl10");
navar element = document.getElementById("ctl31_ctl09");
źródło
Moim rozwiązaniem było dodanie następujących elementów
<script>
do:Skrypt jest skierowany do elementu nadrzędnego 1 widocznej zawartości raportu i ustawia za każdym razem, gdy raport ładuje się 2, w tym przeglądanie raportu wielostronicowego.
style.overflow:visible
if (window.addEventListener && document.querySelector) window.addEventListener("load", function () { // drop out if Sys.Application.add_load is undefined if (!window.Sys || !Sys.Application || !Sys.Application.add_load) return; // register a function for when report data is loaded Sys.Application.add_load(function () { // get the report content control var n = document.querySelector("[id^=VisibleReportContent]"); if (n) { // get the report content control's parent n = n.parentNode; if (n) { // revert overflow:hidden to "visible" n.style.overflow = "visible"; } } }); });
1 oznacza to, że nie mamy się kierować wygenerowane identyfikatory, które mają tendencję do zmian, czyli:
ctl31_ctl09
,ctl31_ctl10
,ctl32_ctl09
, itd.2 widoczny
Sys.Application.add_load()
źródło
W SQL Server 2014 Reporting Services dodano obsługę przeglądarki Google Chrome, ale nie ma jeszcze wsparcia dla iOS. Zobacz szczegóły tutaj .
źródło
Dla mnie nazwa brzmiała „ ctl32_ctl09 ” (SSRS z SQL Server 2012 SP1, MSRS11).
źródło
Musiałem wejść do Chrome z F12i zauważyłem, że mam ctl32 _ctl09, a nie ctl31_ctl09 w moim div.
Dotyczy to systemu Windows Server 2008 R2 64-bitowego z programem SQL Server 2012 . Dołącz skrypt, a następnie uruchom ponownie usługę SSRS i wyczyść pamięć podręczną przeglądarki.
// Poprawka umożliwiająca Chrome wyświetlanie raportów SSRS
źródło
Niestety główna odpowiedź przerywa zmienne (bezwzględne) kolumny w raportach programu Internet Explorer. Dlatego nieco go zmodyfikowałem, czego nie kocham, ponieważ specjalnie szuka WebKit, ale działa:
źródło
Aby obejść konieczność zakodowania identyfikatora elementu na stałe, wyedytowałem plik ReportingServices.js na serwerze RS @ [Dysk]: \ Program Files \ Microsoft SQL Server \ [Reporting Services Instance] \ Reporting Services \ ReportManager \ js \ ReportingServices.js aby dołączyć kod do pobrania jQuery, załaduj go na stronę, a następnie znajdź wszystkie elementy, w których przepełnienie jest ustawione na auto.
Wstaw następujący kod u góry pliku ReportingServices.js
Następnie następna linia po tym jest tym, co pierwotnie znajdowało się w pliku JS.
Następnie dodaj następujący kod
Właśnie skończyłem testować to z Chrome 27 i IE 10 na instancji RM2012 i działało świetnie.
źródło
Problem nadal występuje w przeglądarce Chrome 22.0.1229.79.
YMMV , ale odkryłem, że usunięcie wysokości z tagu ReportViewer rozwiązuje ten problem.
Miałem ten problem z raportami SSAS, ale nie z raportami SSRS. Nie mogłem zrozumieć, dlaczego, dopóki nie sprawdziłem różnic na stronach (konsultant zrobił raporty SSAS). Ustawiał wysokość ReportViewer = 60%, a raporty SSRS nie określały wysokości.
Po usunięciu wysokości moje raporty zostały wyświetlone.
źródło
W przypadku usługi SSRS 2012 w systemie Windows Server 2008 R2 x64 działający skrypt to:
Wszystkie sugerowane powyżej wersje w ogóle nie działały.
źródło
Jednym z problemów z tą
overflow:visible
poprawką jest to, że pływające nagłówki są uszkodzone we wszystkich przeglądarkach. Poniższy skrypt pozostawi przeglądarkę Internet Explorer w spokoju i zastosuje poprawkę tylko do przeglądarek innych niż Internet Explorer. Dzięki temu wszystkie funkcje są zachowane dla użytkowników Internet Explorera, a inne przeglądarki nadal mogą wyświetlać raporty.źródło
Wypróbowałem te podejścia i zadziałało to dla mnie, ale nasi administratorzy systemu byli sceptyczni co do tych zmian.
Zamiast ustawiać wysokość na 100%
ReportViewer
, zastosowałem stałą wysokość i udało mi się to w mojej aplikacji na Internet Explorer i Chrome.źródło
Nigdy nie miałem szczęścia w wyświetlaniu raportów w Chrome. Większość dokumentacji Microsoftu nawet go nie wymienia, więc zakładam, że Chrome musi mieć problem z interpretacją czegoś w ASP.
Zobacz Obsługa przeglądarek dla usług Reporting Services i Power View .
Używam Chrome 11 i zachowuję się tak samo jak Ty.
źródło
Miałem ten sam problem z przeglądaniem raportów w Chrome. Naprawiłem to, dodając rozszerzenie „SSRS Report Fix” do Google Chrome. https://chrome.google.com/webstore/detail/ssrs-report-fix/fjbdfjiheheafbioiejbdpalmojkeobk
źródło