Собственно, был класс ReportExporter, который будет использоваться вместо класса ReportViewer, но он больше не поддерживается. Есть некоторые подобные третьи части.
Я использую этот пример кода:
Получить значение параметров из отчета (если у вас его еще нет из Session, QueryString или где-то еще)
string myParamName="XXX";
object myParamValue;
foreach (ParameterField field in reportDocument.ParameterFields)
{
if (string.Compare(field.Name.TrimStart('@'), myParamName, true) == 0)
myParamValue= field.CurrentValues;
}
Требуется экспорт с использованием имени отчета
string myReportName = "sales for " + myParamValue.ToString() + ".pdf";
try
{
reportDocument.ExportToHttpResponse(
ExportFormatType.PortableDocFormat
,Response, true, myReportName);
}
catch (System.Threading.ThreadAbortException)
{
//System.Threading.ThreadAbortException is thrown
//because, Response.End is called internally in ExportToHttpResponse method:
}