2013-09-25 4 views
0

Я создал отчет RDLC, и он отлично работает, когда я показываю его в веб-браузере. Но мой клиент теперь хочет, чтобы я отправил файл PDF в браузер/клиент, а не показывал отчет в веб-браузере. Я получаю сообщение об ошибке при добавлении кода для создания и отправки PDF-файла отчета клиенту/браузеру. Вот мой код, чтобы отправить PDF клиенту/браузер:Ошибка отчета RDLC: Microsoft.ReportingServices.ReportProcessing.ReportProcessingException

<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" SelectMethod="GetData" 
    TypeName="CourrierExpress.ExpressCourierDataSetTableAdapters.uspFrontEnd_Invoice_PrintInvoiceTableAdapter" 
    OldValuesParameterFormatString="original_{0}"> 
    <SelectParameters> 
     <asp:QueryStringParameter Name="InvoiceId" QueryStringField="InvoiceId" Type="Int64" 
      DefaultValue="" /> 
    </SelectParameters> 
</asp:ObjectDataSource> 

Я звоню этот код позади на время загрузки страницы:

Int64 invoiceId = int.Parse(Request.QueryString["InvoiceId"]); 
     Warning[] warnings; 
     string[] streamIds; 
     string mimeType; 
     string encoding; 
     string extension; 

     var rds = new ReportDataSource { DataSourceId = "ObjectDataSource1", Name = "DataSet1" }; 

     var viewer = new ReportViewer(); 
     viewer.ProcessingMode = ProcessingMode.Local; 
     viewer.LocalReport.DataSources.Clear(); 
     viewer.LocalReport.ReportPath = "Reports/ReportInvoicePrint.rdlc"; //This is your rdlc name. 
     viewer.LocalReport.DataSources.Add(rds); 
     var bytes = viewer.LocalReport.Render("PDF", null, out mimeType, out encoding, out extension, 
               out streamIds, out warnings); 

     Response.Buffer = true; 
     Response.Clear(); 
     Response.ContentType = mimeType; 
     Response.AddHeader("content-disposition", "attachment; filename= filename" + "." + extension); 
     Response.OutputStream.Write(bytes, 0, bytes.Length); // create the file 
     Response.Flush(); // send it to the client to download 
     Response.End(); 

отчет RDLC имеет Dataset с именем «DataSet1». скриншот Ошибка: enter image description here

ответ

2

Обеспечить любое другое имя, например "DataSet1": "MyDataSourceName" и источник данных "StudentList" вот мой источник данных преобразуется в список

ReportDataSource rds = new ReportDataSource("MyDataSourceName", StudentList); 

Больше информации: http://forums.asp.net/t/1556522.aspx

Смежные вопросы