Окончательное решение (работает и в 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.
SSRS HTML - это QuirksMode HTML, который зависит от ошибок IE 5.5.Браузеры не IE не имеют quirksmode IE и поэтому корректно отображают HTML
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 ( F12 ).
Мне нравится Решение Тима , это просто и работает.
Но есть проблема: каждый раз, когда пользователь изменяет параметры (в моих отчетах используются параметры!), AJAX обновляет div, тег overflow: auto перезаписывается, и ни один скрипт не изменяет его,
В этом техническом описании объясняется, в чем проблема:
Это происходит потому, что на странице, построенной с панелями AJAX, только панели AJAX меняют свое состояние, безОбновление всей страницы.Следовательно, события OnLoad
, примененные к тегу <body>
, запускаются только один раз: при первой загрузке страницы.После этого изменение любой из панелей AJAX больше не будет запускать эти события.
Пользователь einarq предложил это решение :
Другой вариант -переименуйте вашу функцию в pageLoad.Любые функции с этим именем будут автоматически вызываться ajax asp.net, если он существует на странице, а также после каждого частичного обновления.Если вы сделаете это, вы также можете удалить атрибут onload из тега body
Итак, вы написали улучшенный скрипт, который показан в решении.