Nihai çözüm (SSRS 2012'de de çalışır!)
Aşağıdaki komut dosyasını aşağıdaki dosyaya ekleyin (SSRS Sunucusunda)
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";
}
}
Not : azzlak'ın belirttiği gibi, div'in adı her zaman değildir ctl31_ctl10
. SQL 2012 için deneyin ctl32_ctl09
ve 2008 R2 için deneyin ctl31_ctl09
. Bu çözüm işe yaramazsa, betiğin overflow:auto
özelliği olarak değiştirerek düzgün çalışıp çalışmadığını görmek için tarayıcınızdan HTML'ye bakın overflow:visible
.
ReportViewer denetimi için çözüm
Bu stil çizgisini .aspx
sayfaya (veya .css
varsa bağlantılı bir dosyaya) ekle
#reportViewer_ctl09 {
overflow:visible !important;
}
Nedeni
Chrome ve Safari overflow:auto
, IE'ye göre farklı bir şekilde işler.
SSRS HTML, QuirksMode HTML'dir ve IE 5.5 hatalarına bağlıdır. IE olmayan tarayıcılarda IE tuhaf mod yoktur ve bu nedenle HTML'yi doğru şekilde oluşturur
SSRS 2008 R2 raporlarının ürettiği HTML sayfası div
, overflow:auto
stili olan bir içerir ve raporu görünmez bir rapora dönüştürür.
<div id="ctl31_ctl10" style="height:100%;width:100%;overflow:auto;position:relative;">
Ben elle değiştirerek Chrome'da raporları görebilir overflow:auto
etmekoverflow:visible
Chrome'un Dev Araçlar kullanılarak üretilen web sayfasında ( F12).
seviyorum Tim'in çözümünü , kolay ve çalışıyor.
Ancak yine de bir sorun var: Kullanıcı parametreleri her değiştirdiğinde (raporlarım parametreleri kullanır!) AJAX div'i yeniler, taşma: otomatik etiket yeniden yazılır ve onu hiçbir komut dosyası değiştirmez.
Bu teknik detay sorunun ne olduğunu açıklıyor:
Bunun nedeni, AJAX panelleri ile oluşturulmuş bir sayfada, tüm sayfayı yenilemeden yalnızca AJAX panellerinin durumlarını değiştirmesidir. Sonuç olarak, OnLoad
uyguladığınız etkinlikler<body>
etikete yalnızca bir kez tetiklenir: sayfanız ilk yüklendiğinde. Bundan sonra, AJAX panellerinden herhangi birini değiştirmek artık bu olayları tetiklemeyecektir.
Einarq kullanıcısı bu çözümü önerdi :
Diğer bir seçenek de işlevinizi pageLoad olarak yeniden adlandırmaktır. Bu ada sahip tüm işlevler, sayfada varsa, her kısmi güncellemeden sonra da asp.net ajax tarafından otomatik olarak çağrılacaktır. Bunu yaparsanız, onload niteliğini body etiketinden de kaldırabilirsiniz.
Böylece çözümde gösterilen geliştirilmiş komut dosyasını yazdı.