Я перенес наши службы отчетов с версии 2008 на другой сервер версии 2008 R2. В версии 2008 отчеты нормально работают в Safari. В новой версии 2008 R2 отчеты вообще не отображаются. Я вижу только раздел параметров, а затем отчет остается пустым. То же самое в Chrome. Согласно Microsoft Safari IS поддерживается, хотя и ограниченно. Отчеты несложные. Фактически, я создал отчет, в котором была только строка, чтобы увидеть, будет ли он отображаться в Safari, но нет, этот отчет также полностью пустой. Кто-нибудь сделал отчеты SSRS доступными для просмотра в Safari? Должен ли я возиться с какой-то настройкой конфигурации?
84
Ответы:
Окончательное решение (работает и в SSRS 2012!)
Добавьте следующий сценарий в следующий файл (на сервере 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"; } }
Примечание : как заметил аззлак, имя div не всегда
ctl31_ctl10
. Для SQL 2012 попробуйте,ctl32_ctl09
а для 2008 R2 попробуйтеctl31_ctl09
. Если это решение не сработает, просмотрите HTML-код в своем браузере, чтобы узнать, правильно ли работал скрипт, изменивoverflow:auto
свойство наoverflow:visible
.Решение для управления ReportViewer
Вставить на
.aspx
страницу (или в связанный.css
файл, если есть) эту строку стиля#reportViewer_ctl09 { overflow:visible !important; }
Причина
Chrome и Safari визуализируют
overflow:auto
иначе, чем IE.HTML-страница, созданная отчетами SSRS 2008 R2, содержит объект
div
соoverflow:auto
стилем, который превращает отчет в невидимый отчет.<div id="ctl31_ctl10" style="height:100%;width:100%;overflow:auto;position:relative;">
Я могу видеть отчеты о Chrome вручную изменить ,
overflow:auto
чтобыoverflow:visible
в полученном веб - страницы с помощью Chrome в Dev Tools ( F12).Мне нравится решение Тима , оно простое и работает.
Но по-прежнему существует проблема: каждый раз, когда пользователь меняет параметры (в моих отчетах используются параметры!), AJAX обновляет div, тег overflow: auto перезаписывается, и ни один сценарий не меняет его.
В этом техническом примечании объясняется, в чем проблема:
Пользователь einarq предложил такое решение :
Итак, написал улучшенный сценарий, который показан в решении.
источник
ctl32_ctl09
.Просто включите,
SizeToReportContent="true"
как показано нижеисточник
Я использую Chrome версии 21 с SQL 2008 R2 SP1, и ни одно из вышеперечисленных исправлений у меня не помогло. Ниже приведен код, который действительно работал, как и в случае с другими ответами, я добавил этот фрагмент кода, чтобы добавить в «C: \ Program Files \ Microsoft SQL Server \ MSRS10_50.MSSQLSERVER \ Reporting Services \ ReportManager \ js \ ReportingServices.js» (на сервер SSRS):
источник
Это известная проблема . Проблема в том, что тег div имеет стиль «overflow: auto», который, по-видимому, плохо реализован с WebKit, который используется Safari и Chrome (см. Ответ Эмануэля Греко). Я не знал, как воспользоваться предложением Эмануэля использовать элемент RS: ReportViewerHost, но решил это с помощью JavaScript.
Проблема
Решение
Поскольку "overflow: auto" указано в атрибуте style элемента div с идентификатором ctl31_ctl10, мы не можем переопределить его в файле таблицы стилей, поэтому я обратился к JavaScript. Я добавил следующий код в "C: \ Program Files \ Microsoft SQL Server \ MSRS10_50.MSSQLSERVER \ Reporting Services \ ReportManager \ js \ ReportingServices.js"
Запись
Похоже, есть решение для SSRS 2005, которое я не пробовал, но я не думаю, что оно применимо к SSRS 2008, потому что я не могу найти класс «DocMapAndReportFrame».
источник
Мое решение основано на идеях выше.
Это не ограничивается определенным идентификатором, плюс вам не нужно включать какую-либо другую библиотеку, такую как jQuery.
источник
Вот решение, которое я использовал для Report Server 2008 R2
Он должен работать независимо от того, что сервер отчетов будет выводить для использования в своем атрибуте «id» таблицы. Не думаю, что всегда можно предположить, что это будет "ctl31_fixedTable"
Я использовал сочетание приведенного выше предложения и некоторых способов динамической загрузки библиотек jquery на страницу из файла javascript, найденного здесь.
На сервере перейдите в каталог: C: \ Program Files \ Microsoft SQL Server \ MSRS10_50.MSSQLSERVER \ Reporting Services \ ReportManager \ js
Скопируйте библиотеку jquery jquery-1.6.2.min.js в каталог
Создайте резервную копию файла ReportingServices.js Отредактируйте файл. И добавьте это в конец:
источник
Вы можете легко исправить это с помощью jQuery - и небольшого уродливого взлома :-)
У меня есть страница asp.net с пользовательским элементом управления ReportViewer.
Затем в событии готовности документа я запускаю таймер и ищу элемент, который требует исправления переполнения (как в предыдущих сообщениях):
Лучше, чем предполагать, что у него есть определенный идентификатор. Вы можете настроить таймер по своему усмотрению. Я установил здесь 1000 мс.
источник
К вашему сведению - ничего из вышеперечисленного у меня не сработало в 2012 SP1 ... простым решением было встроить учетные данные в общий источник данных, а затем сказать Safari, чтобы он доверял сайту сервера SSRS. Тогда это сработало отлично! Потребовалось несколько дней, чтобы найти предполагаемые решения, подобные приведенным выше, только чтобы узнать, что интегрированная безопасность не будет работать надежно в Safari - вам придется возиться с связкой ключей на Mac, а затем все равно не будет работать надежно.
источник
Решение, предоставленное Эмануэлем, сработало для меня. Я мог видеть отчет, когда обращался к нему напрямую с сервера, но когда я использовал элемент управления ReportViewer на моей странице aspx, я не мог увидеть отчет. После проверки визуализированного HTML-кода я обнаружил div с идентификатором «ReportViewerGeneral_ctl09» ( ReportViewerGeneral - это идентификатор сервера элемента управления средства просмотра отчетов), для которого для свойства переполнения установлено значение auto.
Я использовал процедуру, описанную Эмануэлем, чтобы изменить это на видимое, как показано ниже:
источник
Я использовал это. Добавьте ссылку на скрипт на jquery на странице Report.aspx. Используйте следующее, чтобы связать JQuery с событиями Microsoft. Использовал немного предложения Эрика для настройки переполнения.
источник