Как распечатать отчет ReportViewer без отображения формы

StackOverflow https://stackoverflow.com/questions/731049

  •  06-09-2019
  •  | 
  •  

Вопрос

Хотя я понимаю, что мог бы просто показать форму за пределами экрана и скрыть ее, наряду со многими другими формами хакерского волшебства WinForms, я бы предпочел придерживаться пути дзен и сделать это правильно.У меня есть локальный отчет SSRS (поэтому сервера нет), который я хочу предоставить пользователю возможность либо просматривать, либо печатать (другими словами, я не хочу заставлять их просматривать для печати).К сожалению, элемент управления ReportViewer жалуется на свое "состояние", когда я пытаюсь распечатать его либо как компонент, который я создаю явно в своем коде (внутри блока using(), конечно), либо если я пытаюсь создать экземпляр своей формы просмотра и просто распечатать, даже не показывая ее.

Есть ли способ сделать это, который меня устроит, или я должен просто показать это за кадром и двигаться дальше по своей жизни?

Это было полезно?

Решение

У меня есть образец, который делает это, размещенный в моем блоге здесь: http://blogs.msdn.com/brianhartman/archive/2009/02/27/manually-printing-a-report.aspx

Объект LocalReport может быть создан независимо от элемента управления ReportViewer и использоваться непосредственно в примере кода, прикрепленном к этому сообщению в блоге.Или вы можете передать в ReportViewer.LocalReport, даже если вы сначала не отобразите отчет в пользовательском интерфейсе.

Другие советы

Проверьте это и посмотрите, поможет ли это...http://scruffylookingcatherder.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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top