Frage

Während ich merke, dass ich einfach das Formular Off-Screen zeigen könnte, und verstecken sie, zusammen mit vielen anderen Formen von WinForms hackish wizardry, würde ich eher Stick mit dem zen Weg und bekommen dies richtig gemacht. Ich habe einen SSRS lokalen Bericht (so kein Server), die ich dem Benutzer die Möglichkeit, entweder Anzeigen oder Drucken geben wollen (mit anderen Worten, ich möchte, dass sie nicht zwingen, um Druck zu sehen). Leider wirft das Reportviewer-Steuerelement über seinen „Zustand“, wenn ich versuche, es zu drucken, entweder als Komponente explizit in meinem Code Ich erstelle (in einem mit () Block, natürlich) oder wenn ich versuche, meinen Zuschauer Form zu instanziiert und bedrucken, ohne jemals es zu zeigen.

Gibt es ein Mittel, dies zu tun, der mit mir gut sitzen wird, oder soll ich es nur Off-Screen zeigen und mit meinem Leben weitergehen?

War es hilfreich?

Lösung

Ich habe eine Probe, die diese auf meinem Blog hier gepostet hat: http://blogs.msdn.com/brianhartman/archive/2009/02/27/manually-printing-a-report.aspx

Das LocalReport Objekt kann unabhängig von dem Reportviewer-Steuerelement und direkt in dieser Blog-Post angebracht in dem Beispielcode instanziiert werden. Oder Sie können in ReportViewer.LocalReport passieren, auch wenn Sie zum ersten Mal in der Benutzeroberfläche den Bericht nicht angezeigt werden.

Andere Tipps

Überprüfen Sie dies und sehen, ob es hilft ... http://scruffylookingcatherder.com/archive/2007/12/07/printing-reporting-services-2005-reports.aspx

Eine kleine Erklärung: Es ist die SSRS Web-Service mit dem Report zu einem EMF-Bild machen dann das Bild an den Drucker senden

.
Private Sub btnReceipt_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnReceipt.Click


    My.Forms.FormA5.ReportViewer.LocalReport.DataSources.Clear()
    Dim cmd = New SqlClient.SqlCommand("Select * from V_Sale where InvoiceNo=" & Me.txtInvoice.Text, cn)
    Dim dr = cmd.ExecuteReader()
    Dim dt As New DataTable
    dt.Load(dr)
    dr.Close()
    Dim rpt As New ReportViewer
    rpt.LocalReport.DataSources.Clear()
    rpt.LocalReport.DataSources.Add(New ReportDataSource("posds_receipt", dt))
    rpt.LocalReport.ReportEmbeddedResource = "POSsystem.receipt.rdlc"
    rpt.SetDisplayMode(DisplayMode.PrintLayout)
    rpt.ZoomMode = ZoomMode.FullPage

    Dim printDialog1 As PrintDialog = New PrintDialog
    printDialog1.Document = PrintDocument1
    Dim result As DialogResult = printDialog1.ShowDialog
    If (result = DialogResult.OK) Then
        PrintDocument1.Print()
    End If

End Sub
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top