webentwicklung-frage-antwort-db.com.de

SQL Reporting Services - Die Schaltfläche "Drucken" wird in Mozilla nicht angezeigt

Ich verwende SQL Reporting Services , es funktioniert einwandfrei und zeigt eine Druckschaltfläche in DH, die aber nicht in Mozilla Firefox angezeigt wird.

Hat jemand eine Idee?

Ich habe diese Lösung überprüft, aber sie funktioniert nicht:

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

14
Muhammad Akhtar

Ich glaube nicht, dass ActiveX verwendet wird, denn im onclick-Ereignis der Tabelle gibt es ein einfaches:

ReportFramerpvReport.GetReportFrame().contentWindow.print()

Jedenfalls habe ich diese Drucksachen durch meine eigene Druckfunktion ersetzt, weil dieser Code oben nicht für FF funktioniert hat.

Ich weiß, es ist hässlich ... aber es funktioniert! (Ersetzen Sie einfach den ControlName-Wert durch Ihre ControlID und fügen Sie Ihrer Seite unbedingt jQuery lib hinzu.)

    $(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

Die obige Lösung funktionierte nicht für mich, daher habe ich nach der Überprüfung des gerenderten HTML-Codes die folgenden Änderungen an der obigen Lösung vorgenommen.

ReportViewerGeneral_ctl05 -> ID des Pagers 
VisibleReportContentReportViewerGeneral_ctl09 -> ID des Div, das das Ergebnis des Berichts enthielt. 
pageLoad -> referiere 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

Wenn Sie die Exportfunktion über ReportViewer anbieten, kann der Benutzer dennoch nach PDF exportieren und diese drucken. Nicht so effizient/glatt wie eine Drucktaste mit einem Klick, aber es ist eine einfache Lösung.

2
Tyler

Keine Lösung, aber ein bisschen Info.

Ich verwende SSRS ziemlich regelmäßig für interne Projekte, da ich weiß, dass die Zielgruppe alle IE verwendet. Ich verwende es jedoch nicht für externe Web-App-Anwendungen, da ich in FF so viele Probleme damit hatte (Datumsauswahl funktioniert nicht usw.), obwohl Ich habe mir noch nie die Optionen für die Druckschaltfläche angesehen. Ich vermute, dass dies ein ähnliches Problem sein kann (Report Viewer-Steuerelement, das nur für den IE entwickelt wurde!), da es sich auf die Symbolleiste im Allgemeinen auswirkt.

Wenn Sie dieses http://www.windows-tech.info/15/5fb0fd315e07edf8.php verlassen, scheint es, dass einige ActiveX-Steuerelemente verwendet werden und FF ActiveX nicht nativ macht, obwohl ich mich an ein Plugin erinnere, das erlaubt ist ActiveX-Steuerelemente werden geladen, aber wo ich gesehen habe, kann ich mich nicht erinnern.

EDIT: http://www.iol.ie/~locka/mozilla/plugin.htm Ich habe es noch nie benutzt und kann es nicht verbürgen, aber es gibt hier ein Plugin.

Für Projekte mit Web-Ausrichtung verwende ich in der Regel Crystal!

HTH

0
OneSHOT

Ich habe eine Lösung gemacht, die den gesamten Druckknopf von IE an andere Browser emuliert.

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

0
cafekun