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