سؤال

بينما أدرك أنه يمكنني فقط إظهار النموذج خارج الشاشة وإخفائه، إلى جانب العديد من الأشكال الأخرى من 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 ثم أرسل الصورة إلى الطابعة.

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
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top