Come stampare un rapporto ReportViewer senza mostrare una forma
-
06-09-2019 - |
Domanda
Mentre mi rendo conto che ho potuto solo mostrare la forma off-screen e nasconderlo, insieme a molte altre forme di WinForms wizardry hackish, preferisco rimanere con il percorso zen e ottenere questo fatto a destra. Ho un rapporto locale SSRS (quindi senza server) che voglio dare all'utente l'opzione di visualizzazione o la stampa (in altre parole, non voglio per costringerli a vedere per la stampa). Purtroppo, il controllo ReportViewer lamenta il suo "stato" quando si tenta di stampare o come componente Sto creando in modo esplicito nel mio codice (all'interno di un blocco utilizzando (), ovviamente) o se cerco di istanziare la mia forma spettatore e basta stampare senza mai mostrarla.
C'è un modo per fare questo che mi sta bene, o devo solo mostrare che off-schermo e andare avanti con la mia vita?
Soluzione
Ho un campione che fa questo ha postato sul mio blog qui: http://blogs.msdn.com/brianhartman/archive/2009/02/27/manually-printing-a-report.aspx
L'oggetto LocalReport può essere istanziata indipendentemente dal controllo ReportViewer e utilizzato direttamente nel codice di esempio assegnata a quella post. Oppure si può passare ReportViewer.LocalReport, anche se non prima di visualizzare il report nell'interfaccia utente.
Altri suggerimenti
Check this out e vedere se aiuta ... http://scruffylookingcatherder.com/archive/2007/12/07/printing-reporting-services-2005-reports.aspx
Una piccola spiegazione: E 'utilizzando il servizio web SSRS per il rendering del report a un'immagine EMF poi inviare l'immagine alla stampante
.Si prega di consultare il link sottostante molto utile per voi http: / /social.msdn.microsoft.com/Forums/en-US/9f52d79d-5baf-4e84-97d5-7dbba6623b89/printing-without-the-reportviewer
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