Comment imprimer un rapport ReportViewer sans montrer une forme
-
06-09-2019 - |
Question
Alors que je me rends compte que je pouvais montrer la forme hors de l'écran et le cacher, ainsi que de nombreuses autres formes de WinForms hackish wizardry, je préfère rester avec le chemin zen et obtenir ce fait. J'ai un rapport local SSRS (donc pas de serveur) que je veux donner à l'utilisateur la possibilité soit l'affichage ou l'impression (en d'autres termes, je ne veux pas les forcer à voir à imprimer). Malheureusement, le contrôle ReportViewer se plaint de son « état » lorsque je tente de l'imprimer soit en tant que composante que je crée explicitement dans mon code (à l'intérieur d'un bloc à l'aide (), bien sûr) ou si je tente de instancier ma forme de spectateur et juste imprimer sans jamais le montrer.
Y at-il un moyen de faire ce qui va s'asseoir bien avec moi, ou devrais-je montrer juste hors de l'écran et de passer ma vie?
La solution
J'ai un échantillon qui fait cela a posté sur mon blog ici: http://blogs.msdn.com/brianhartman/archive/2009/02/27/manually-printing-a-report.aspx
L'objet LocalReport peut être instancié indépendamment du contrôle ReportViewer et utilisé directement dans l'exemple de code attachée à ce billet. Ou vous pouvez passer ReportViewer.LocalReport même si vous ne pas afficher d'abord le rapport dans l'interface utilisateur.
Autres conseils
Vérifiez cela et voir si ça aide ... http://scruffylookingcatherder.com/archive/2007/12/07/printing-reporting-services-2005-reports.aspx
Une petite explication: Il utilise le service Web SSRS pour rendre le rapport à une image EMF puis envoyer l'image à l'imprimante
.S'il vous plaît voir le lien ci-dessous très utile 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