web-dev-qa-db-fra.com

SQL Reporting Services - Bouton Imprimer non affiché dans Mozilla

J'utilise Services de génération de rapports SQL , il fonctionne parfaitement et affiche un bouton d'impression dans IE, mais non affiché dans Mozilla Firefox.

Est-ce que quelqu'un a une idée?

J'ai vérifié cette solution, mais cela ne fonctionne pas:

http://social.msdn.Microsoft.com/Forums/en-US/vsreportcontrols/thread/7bdf431d-70db-419d-8e98-ef41cad8e2d8

14
Muhammad Akhtar

Je ne pense pas qu'il utilise ActiveX, car dans l'événement table onclick, il y a un simple:

ReportFramerpvReport.GetReportFrame().contentWindow.print()

Quoi qu'il en soit, j'ai remplacé ce travail d'impression par ma propre fonction d'impression, car le code ci-dessus ne fonctionnait pas avec FF ..

Je sais que c'est moche ... mais ça marche! (remplacez simplement la valeur ControlName par votre ControlID et veillez à ajouter jQuery lib dans votre page)

    $(document).ready(function()
    {
        if ($.browser.mozilla)
        {
            try
            {
                var ControlName = 'RptDespesas';
                var innerScript = '<scr' + 'ipt type="text/javascript">document.getElementById("' + ControlName + '_print").Controller = new ReportViewerHoverButton("' + ControlName + '_print", false, "", "", "", "#ECE9D8", "#DDEEF7", "#99BBE2", "1px #ECE9D8 Solid", "1px #336699 Solid", "1px #336699 Solid");</scr' + 'ipt>';
                var innerTbody = '<tbody><tr><td><input type="image" style="border-width: 0px; padding: 2px; height: 16px; width: 16px;" alt="Print" src="/Reserved.ReportViewerWebControl.axd?OpType=Resource&amp;Version=9.0.30729.1&amp;Name=Microsoft.Reporting.WebForms.Icons.Print.gif" title="Print"></td></tr></tbody>';
                var innerTable = '<table title="Print" onmouseout="this.Controller.OnNormal();" onmouseover="this.Controller.OnHover();" onclick="PrintFunc(\'' + ControlName + '\'); return false;" id="' + ControlName + '_print" style="border: 1px solid rgb(236, 233, 216); background-color: rgb(236, 233, 216); cursor: default;">' + innerScript + innerTbody + '</table>'
                var outerScript = '<scr' + 'ipt type="text/javascript">document.getElementById("' + ControlName + '_print").Controller.OnNormal();</scr' + 'ipt>';
                var outerDiv = '<div style="display: inline; font-size: 8pt; height: 30px;" class=" "><table cellspacing="0" cellpadding="0" style="display: inline;"><tbody><tr><td height="28px">' + innerTable + outerScript + '</td></tr></tbody></table></div>';

                $("#" + ControlName + " > div > div").append(outerDiv);

            }
            catch (e) { alert(e); }
        }
    });

    function PrintFunc(ControlName)
    {
        setTimeout('ReportFrame' + ControlName + '.print();', 100);
    }
11
Israel Rodriguez

La solution ci-dessus ne fonctionnait pas pour moi, j'ai donc apporté les modifications suivantes à la solution ci-dessus après avoir inspecté le code HTML rendu.

ReportViewerGeneral_ctl05 -> id du pager 
VisibleReportContentReportViewerGeneral_ctl09 -> id du div qui contenait le résultat du rapport. 
pageLoad -> reportez-vous this

function pageLoad() {

if ($.browser.mozilla && !$("#ff_print").length) {
            try {
                var ControlName = 'ReportViewerGeneral';
                var innerTbody = '<tbody><tr><td><input type="image" style="border-width: 0px; padding: 2px; height: 16px; width: 16px;" alt="Print" src="/Reserved.ReportViewerWebControl.axd?OpType=Resource&amp;Version=9.0.30729.1&amp;Name=Microsoft.Reporting.WebForms.Icons.Print.gif" title="Print"></td></tr></tbody>';
                var innerTable = '<table title="Print" onclick="PrintFunc(\'' + ControlName + '\'); return false;" id="ff_print" style="border: 1px solid rgb(236, 233, 216); background-color: rgb(236, 233, 216); cursor: default;">' + innerTbody + '</table>'
                var outerDiv = '<div style="display: inline; font-size: 8pt; height: 30px;" class=" "><table cellspacing="0" cellpadding="0" style="display: inline;"><tbody><tr><td height="28px">' + innerTable + '</td></tr></tbody></table></div>';

                $("#ReportViewerGeneral_ctl05 > div").append(outerDiv);

            }
            catch (e) { alert(e); }
        }
}


    function PrintFunc() {
        var strFrameName = ("printer-" + (new Date()).getTime());
        var jFrame = $("<iframe name='" + strFrameName + "'>");
        jFrame
        .css("width", "1px")
        .css("height", "1px")
        .css("position", "absolute")
        .css("left", "-2000px")
        .appendTo($("body:first"));

        var objFrame = window.frames[strFrameName];
        var objDoc = objFrame.document;
        var jStyleDiv = $("<div>").append($("style").clone());

        objDoc.open();
        objDoc.write($("head").html());
        objDoc.write($("#VisibleReportContentReportViewerGeneral_ctl09").html());
        objDoc.close();
        objFrame.print();

        setTimeout(function () { jFrame.remove(); }, (60 * 1000));
    }
4
Sachin

Si vous proposez une fonctionnalité d'exportation via ReportViewer, l'utilisateur peut toujours exporter au format PDF et l'imprimer. Pas aussi efficace/lisse qu'un bouton d'impression en un clic, mais c'est un travail facile.

2
Tyler

Pas une solution mais un peu d’information.

J'utilise assez régulièrement SSRS pour des projets internes, car je sais que le public cible utilise tous IE, mais je ne l'utilise pas pour les applications Web externes car j'ai eu tant de problèmes avec FF (les sélecteurs de date ne fonctionnent pas, etc.), bien que Je n’ai jamais examiné les options du bouton d’impression, mais j’imagine qu’il pourrait s’agir d’un problème similaire (contrôle de la visionneuse de rapports conçu uniquement pour IE!), car il semble affecter la barre d’outils en général.

En sortant de cette http://www.windows-tech.info/15/5fb0fd315e07edf8.php il semble que certains contrôles ActiveX soient utilisés et que FF ne le fasse pas de manière native bien que je me souvienne d'un plugin autorisant les contrôles ActiveX être chargé mais où j'ai vu que je ne me souviens plus.

EDIT: http://www.iol.ie/~locka/mozilla/plugin.htm Je ne l'ai jamais utilisé et je ne peux pas en témoigner, mais il existe un plugin ici.

Pour les projets Web, j’ai tendance à utiliser Crystal!

HTH

0
OneSHOT

J'ai mis au point une solution qui émule l'intégralité du bouton d'impression de IE vers d'autres navigateurs.

https://stackoverflow.com/a/37455354/1253835

0
cafekun