Універсальне рішення (працює і в 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";
}
}
Примітка : Як зазначив azzlak, ім'я 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, не мають дивовижного режиму 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, переповнення: автоматичний тег перезаписується, і жоден сценарій його не змінює.
Ця детальна інформація пояснює, в чому проблема:
Це відбувається тому, що на сторінці, побудованій з панелями AJAX, лише панелі AJAX змінюють свій стан, не оновлюючи всю сторінку. Отже, OnLoad
події, які ви застосували до <body>
тегу, запускаються лише один раз: при першому завантаженні вашої сторінки. Після цього зміна будь-якої панелі AJAX більше не спричинить ці події.
Користувач einarq запропонував таке рішення :
Інший варіант - перейменувати свою функцію в pageLoad. Будь-які функції з цим іменем автоматично викликатимуться asp.net ajax, якщо вони існують на сторінці, також після кожного часткового оновлення. Якщо ви зробите це, ви також можете видалити атрибут onload з тегу body
Так написав вдосконалений сценарій, який показаний у рішенні.