Окончательное решение (работает и в SSRS 2012!)
Добавьте следующий сценарий к « C: \ Program Files \ Microsoft SQL Server \ MSRS10_50.MSSQLSERVER \ Reporting Services \ ReportManager \ js \ ReportingServices.js » (на сервере SSRS):
function pageLoad() {
var element = document.getElementById("ctl31_ctl10");
if (element)
{
element.style.overflow = "visible";
}
}
На самом деле я не знаю, всегда ли имя div ctl31_ctl10
: в моем случае это так (вместо SQL Server 2012 найден azzlak ctl32_ctl09
).
Если это решение не работает, посмотрите HTML-код в браузере, чтобы убедиться, что скрипт работал правильно, изменив свойство overflow: auto на overflow: visible .
Решение для управления ReportViewer
Вставьте эту строку стиля на страницу .aspx
(или в связанный файл .css
, если имеется):
#reportViewer_ctl09 {
overflow:visible !important;
}
Причина
Визуализация в Chrome и Safari переполнение: автоматически по-другому, чем в Internet Explorer.
SSRS HTML является QuirksMode HTML и зависит от ошибок IE 5.5. Non-IE
браузеры не имеют quirksmode IE и поэтому отображают HTML
правильно
HTML-страница, создаваемая отчетами SSRS 2008 R2, содержит div с переполнением : стиль auto и превращает отчет в невидимый отчет.
<div id="ctl31_ctl10" style="height:100%;width:100%;overflow:auto;position:relative;">
...</div>
Изменение вручную (с помощью окна отладки Chrome) окончательного переполнения HTML : автоматически в переполнения: видимого я могу видеть отчеты в Chrome.
Я люблю Решение Тима ; это просто и работает.
Но есть проблема: каждый раз, когда пользователь изменяет параметры (в моих отчетах используются параметры!), AJAX обновляет div, тег overflow: auto перезаписывается, и никакой скрипт не меняет его.
Эта техническая деталь объясняет, в чем проблема.
Это происходит потому, что на странице, созданной с помощью панелей AJAX, только панели AJAX изменяют свое состояние без обновления всей страницы. Следовательно, события OnLoad, примененные к тегу, запускаются только один раз: при первой загрузке страницы. После этого изменение любой панели AJAX больше не будет запускать эти события.
Мистер Эйнарк предложил мне решение здесь .
Другой вариант - переименовать вашу функцию в pageLoad.
Любые функции с этим именем будут автоматически вызываться ASP.NET Ajax, если он существует на странице, а также после каждого частичного обновления. Если вы сделаете это, вы также можете удалить атрибут onload из тега body
Итак, я написал улучшенный скрипт, который показан в решении.