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