Единственный способ, которым я узнал, как это сделать, - это создать собственную функцию «экспорта» ... которая на самом деле довольно проста.
Шаг 1. Создайте в своем отчете параметр с именем «ShowImage». Я использовал тип данных String, скрыл подсказку и установил значение по умолчанию «False». Таким образом, когда отчет впервые запускается в программе просмотра отчетов на вашей странице, он не скрывается.
Шаг 2. Измените свойство видимости для вашего изображения на следующее выражение:
=CBool(Parameters!ShowImage.Value)
Шаг 3. Скрыть элементы управления экспортом в программе просмотра отчетов. Вот мой пример:
<rsweb:ReportViewer ID="ReportViewer1" runat="server" ShowExportControls="false" Font-Names="Verdana" Font-Size="8pt">
<LocalReport ReportPath="Report1.rdlc" >
</LocalReport>
</rsweb:ReportViewer>
Шаг 4: Добавьте кнопку на свою страницу и закодируйте пользовательский экспорт. Вам нужно будет обязательно установить параметр, который вы создали на шаге 1.
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
'Create ReportViewer
Dim viewer As New Microsoft.Reporting.WebForms.ReportViewer()
Dim p(0) As Microsoft.Reporting.WebForms.ReportParameter
p(0) = New Microsoft.Reporting.WebForms.ReportParameter("ShowImage", "True")
viewer.LocalReport.ReportPath = Server.MapPath("Report1.rdlc")
viewer.LocalReport.SetParameters(p)
'Export to PDF
Dim reportContent As Byte() = viewer.LocalReport.Render("PDF", Nothing, Nothing, Nothing, Nothing, Nothing, Nothing)
'Return PDF
Me.Response.Clear()
Me.Response.ContentType = "application/pdf"
Me.Response.AddHeader("Content-disposition", "attachment; filename=Report.pdf")
Me.Response.BinaryWrite(reportContent)
Me.Response.End()
End Sub
Вот и все. Могу я спросить, почему вы не хотите создать пользовательское событие экспорта?