0

RDLC レポートを作成しましたが、Web ブラウザで表示すると問題なく動作します。しかし、私のクライアントは、Web ブラウザーでレポートを表示する代わりに、PDF ファイルをブラウザー/クライアントに送信するように求めています。レポートの PDF を作成してクライアント/ブラウザに送信するコード ビハインドを追加すると、エラーが発生します。PDFをクライアント/ブラウザに送信するコードは次のとおりです。

 <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 レポートには、「DataSet1」という名前のデータセットがあります。エラーのスクリーンショットは次のとおりです。 ここに画像の説明を入力

4

1 に答える 1

2

「Dataset1」の例として「MyDataSourceName」と、データソース「StudentList」に別の名前を付けます。

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

詳細: http://forums.asp.net/t/1556522.aspx

于 2013-09-27T10:19:23.153 に答える