Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
983 views
in Technique[技术] by (71.8m points)

reporting services - SSRS 2008 R2 - SSRS 2012 - ReportViewer: Reports in Safari/Chrome but works fine in Firefox/Internet Explorer 8... why?

I have some simple reports in SSRS 2008 R2, but they won't display at all in Safari or Chrome. According to Microsoft's Books Online, these browsers are supported in limited fashion. However, I can't see anything after the data "Loading" clock completes. The parameter bar and bread crumb navigation section at the top of the page are all there. Also, I can Save/Export to any format on Safari and Chrome. It just won't display the report section itself, which is just blank.

Am I supposed to use certificates and secured connections (currently not setup with HTTPS, only HTTP)? Are there any server-side configurations that need to be tweaked? Has anyone had success displaying ANY reports on Safari/Chrome using previous SSRS versions (2005)?

I'm using Safari 5.0.4 and Chrome 10.0.648.151. I know the similarity for these two browsers is they both are based on WebKit.

The report renders successfully on Internet Explorer 8 (of course) and Firefox 4.0.

I would really appreciate it if someone can shed some light on this.

Question&Answers:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Ultimate solution (works in SSRS 2012 too!)

Append the following script to "C:Program FilesMicrosoft SQL ServerMSRS10_50.MSSQLSERVERReporting ServicesReportManagerjsReportingServices.js" (on the SSRS Server):

function pageLoad() {
    var element = document.getElementById("ctl31_ctl10");
    if (element)
    {
        element.style.overflow = "visible";
    }
}

Actually I don't know if the div's name is always ctl31_ctl10: in my case it is (instead over SQL Server 2012 azzlak found ctl32_ctl09).

If this solution doesn't work, look at the HTML from your browser to see if the script has worked properly changing the overflow:auto property to overflow:visible.


Solution for ReportViewer control

Insert this style line into the .aspx page (or into a linked .css file, if available):

#reportViewer_ctl09 {
  overflow:visible !important;
}

Reason

Chrome and Safari render overflow:auto in different way respect to Internet Explorer.

SSRS HTML is QuirksMode HTML and depends on IE 5.5 bugs. Non-IE browsers don't have the IE quirksmode and therefore render the HTML correctly

The HTML page produced by SSRS 2008 R2 reports contain a div which has overflow:auto style, and it turns report into an invisible report.

<div id="ctl31_ctl10" style="height:100%;width:100%;overflow:auto;position:relative;">
...</div>

Changing manually (using Chrome's debug window) final HTML overflow:auto in overflow:visible i can see reports on Chrome.

I love Tim's solution; it's easy and working.

But there is still a problem: Any time the user change parameters (my reports use parameters!) AJAX refreshes the div, the overflow:auto tag is rewritten, and no script changes it. This technote detail explains what is the problem.

This happens because in a page built with AJAX panels, only the AJAX panels change their state, without refreshing the whole page. Consequently, the OnLoad events you applied on the tag are only fired once: the first time your page loads. After that, changing any of the AJAX panels will not trigger these events anymore.

Mr.einarq suggested me the solution here.

Another option is to rename your function to pageLoad.

Any functions with this name will be called automatically by ASP.NET Ajax if it exists on the page, also after each partial update. If you do this you can also remove the onload attribute from the body tag

So I wrote the improved script that is shown in the solution.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...