โซลูชันที่ดีที่สุด (ใช้งานได้ใน 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 ไม่มี 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
ในหน้าเว็บที่สร้างขึ้นด้วยตนเองโดยใช้เครื่องมือ Dev ของ Chrome ( F12)
ฉันชอบวิธีแก้ปัญหาของทิมมันง่ายและใช้งานได้จริง
แต่ยังคงมีปัญหาอยู่: เมื่อใดก็ตามที่ผู้ใช้เปลี่ยนพารามิเตอร์ (รายงานของฉันใช้พารามิเตอร์!) AJAX รีเฟรช div, overflow: auto tag จะถูกเขียนใหม่และไม่มีสคริปต์ใดเปลี่ยนแปลง
รายละเอียดเทคโนโลยีนี้อธิบายว่าปัญหาคืออะไร:
สิ่งนี้เกิดขึ้นเนื่องจากในเพจที่สร้างด้วยแผง AJAX มีเพียงแผง AJAX เท่านั้นที่เปลี่ยนสถานะโดยไม่ต้องรีเฟรชทั้งหน้า ดังนั้นOnLoad
เหตุการณ์ที่คุณใช้กับ<body>
แท็กจะเริ่มทำงานเพียงครั้งเดียว: ครั้งแรกที่โหลดหน้าเว็บ หลังจากนั้นการเปลี่ยนแผง AJAX จะไม่ทำให้เกิดเหตุการณ์เหล่านี้อีกต่อไป
ผู้ใช้ einarq แนะนำวิธีแก้ปัญหานี้ :
อีกทางเลือกหนึ่งคือการเปลี่ยนชื่อฟังก์ชันของคุณเป็น pageLoad ฟังก์ชั่นใด ๆ ที่มีชื่อนี้จะถูกเรียกโดยอัตโนมัติโดย asp.net ajax หากมีอยู่ในเพจและหลังจากการอัปเดตแต่ละส่วน หากคุณทำเช่นนี้คุณสามารถลบแอตทริบิวต์ onload ออกจากแท็ก body ได้
ดังนั้นจึงเขียนสคริปต์ที่ปรับปรุงแล้วซึ่งแสดงในโซลูชัน