كيفية طباعة تقرير ReportViewer دون إظهار نموذج
-
06-09-2019 - |
سؤال
بينما أدرك أنه يمكنني فقط إظهار النموذج خارج الشاشة وإخفائه، إلى جانب العديد من الأشكال الأخرى من WinForms Hackish Wizardry، أفضل التمسك بمسار Zen واحصل على هذا صحيح. لدي تقرير محلي SSRS (حتى لا يوجد خادم) أريد إعطاء المستخدم خيار إما المشاهدة أو الطباعة (بعبارة أخرى، لا أريد إجبارهم على عرض للطباعة). لسوء الحظ، فإن عنصر التحكم ReportViewer يشكو من "حالته" عندما أحاول طباعته إما كمكون أقوم بإنشائه صراحة في التعليمات البرمجية (داخل كتلة باستخدام ()، بالطبع) أو إذا حاولت إنشاء إنشاء نموذج المشاهد الخاص بي و مجرد طباعة دون إظهار ذلك على الإطلاق.
هل هناك وسيلة للقيام بذلك من شأنها أن تجلس جيدا معي، أو يجب أن أظهر لها فقط الشاشة والمضي قدما في حياتي؟
المحلول
لدي عينة تقوم بهذا نشرت على مدونتي هنا: http://blogs.msdn.com/brianhartman/archive/2009/02/27/manuary-printing-a-report.aspx.
يمكن إنشاء مثيل كائن LocalReport بشكل مستقل عن عنصر تحكم ReportViewer واستخدامه مباشرة في نموذج التعليمات البرمجية المرفقة بهذا منشور المدونة. أو يمكنك المرور في ReportViewer.localReport حتى لو لم تعرض التقرير لأول مرة في UI.
نصائح أخرى
تحقق من ذلك ومعرفة ما إذا كان يساعد ...http://scruffylookookingcatherder.com/archive/2007/12/07/Printing-Reporting-Services-2005-Reports.aspx.
تفسير صغير: يستخدم خدمة الويب SSRS لتقديم التقرير إلى صورة EMF ثم أرسل الصورة إلى الطابعة.
يرجى الاطلاع على الرابط أدناه مفيد جدا لك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