SSRS date-picker is invisible in Google Chrome, no

2019-02-04 21:24发布

I'm integrating SSRS reports(developed in VS 2008 vs. 9.0 ), and when I load it into the browser with Chrome, I get this:

enter image description here

There's no date-icon!

In Opera it shows, but doesn't work:

enter image description here

How do I figure out how to 1.) get it to work correct . 2) Make it visible in Chrome

I found a site talking about it( here ) , but it only hhas a dead-link ( http://www.rajbandi.net/ )

Is it just me or is this a complex issue to fix? Any tips appreciated

4条回答
家丑人穷心不美
2楼-- · 2019-02-04 21:58

The supposedly dead link (rajbandi.net) was accessible at the time of writing this post; I'm putting its contents here for use if the link is down again:


Fixing SSRS Report Viewer control date picker in Google chrome
Author: Raj Bandi
April 3, 2012
https://rajbandi.net/2012/04/03/fixing-ssrs-report-viewer-control-date-picker-in-google-chrome/

SSRS Report Viewer control works well in IE6+ but has some known compatibility issues with other major browsers(Firefox, Chrome etc.) around date picker and print button.

For more information read this

http://msdn.microsoft.com/en-us/library/ms251673.aspx

I am presenting a simple solution to fix date picker issue in Chrome with a combination of some server side code and Client side JQuery script.

Server Side Code

1) Add the below code in the page/control file in which the reportviewer control resides

<asp:HiddenField ID="DatePickers" runat="server" />

2) Add the below code in the code behind file of page/control in which the reportviewer control resides(.Net 2.0 version)

protected override void OnPreRender(EventArgs e)
{
    base.OnPreRender(e);
    DatePickers.Value = string.Join(",",(new List(GetDateParameters()).ToArray()));
}
private IEnumerable GetDateParameters()
{
    // I'm assuming report view control id as reportViewer
    foreach (ReportParameterInfo info in reportViewer.ServerReport.GetParameters())
    {
        if (info.DataType == ParameterDataType.DateTime)
        {
            yield return string.Format("[{0}]",info.Prompt);
        }
    }
}

Client Side Code

1) Add the below script in the html head section

$(document).ready(function(){
    if ($.browser.webkit)
    {
        $($(":hidden[id*='DatePickers']").val().split(",")).each(function(i, item) {
            var h = $("table[id*='ParametersGrid'] span").filter(function(i) {
            var v = "[" + $(this).text() + "]";
            return (v != null && v.indexOf(item) >= 0);
        })
        .parent("td").next("td").find("input")
            .datepicker({
                showOn: "button",
                buttonImage: '/Reserved.ReportViewerWebControl.axd?OpType=Resource&Name=Microsoft.Reporting.WebForms.calendar.gif',
                buttonImageOnly: true,
                dateFormat: 'dd/mm/yy',
                changeMonth: true,
                changeYear: true
            });
        });
    }
});
查看更多
姐就是有狂的资本
3楼-- · 2019-02-04 22:07

At least in Chrome, an option could be just to show the date excluding the time. This make more sense to the end user.

//Update the dates
$(document).ready(function () {
    $('input[type=text]').each(function () {
        $(this).val($(this).val().replace('12:00:00 AM', ''));
    })
});
查看更多
倾城 Initia
4楼-- · 2019-02-04 22:12

Removing current account/people and adding new account/people on chrome worked for me.

查看更多
登录 后发表回答