2

我有一个网格视图,我在其中放置了一个链接按钮来打印报告。在此按钮单击事件中,我需要调用 SSRS 报告并需要将输出作为 PDF 文件。

我使用了下面的代码,代码运行良好,但我看不到打开/保存 pdf 文件的提示。

   protected void btnAuthenticateAndPrint_Click(object sender, EventArgs args)
     {
       try
        {

        //Getting Values from grid
        LinkButton lb = (LinkButton)sender;
        GridViewRow row = (GridViewRow)lb.NamingContainer;
        Label lbOrderID = row.FindControl("lbOrderID") as Label;
        int OrderId = Convert.ToInt32(lbOrderID.Text);
        da = new SqlDataAdapter("Get_PODetails", con);
        da.SelectCommand.CommandType = CommandType.StoredProcedure;
        da.SelectCommand.Parameters.AddWithValue("@MPDI_ID", OrderId);
        ds = new DataSet();
        da.Fill(ds, "PO");
        if (ds.Tables["PO"].Rows.Count > 0)
        {
            lblPOId.Text=ds.Tables["PO"].Rows[0]["MPDI_ID"].ToString();
            lblVendid.Text = ds.Tables["PO"].Rows[0]["MVDI_ID"].ToString();
            lblBranch.Text = ds.Tables["PO"].Rows[0]["MBRI_ID"].ToString();
            lblDate.Text = Convert.ToDateTime(ds.Tables["PO"].Rows[0]["MPDI_Date"]).ToString("dd-MM-yyyy");
        }

        //SSRS Report Print
        rs = new RSWebService.ReportingService2005();
        rsExec = new REWebService.ReportExecutionService();
        rs.Credentials = System.Net.CredentialCache.DefaultCredentials;
        rsExec.Credentials = System.Net.CredentialCache.DefaultCredentials;
        rs.Url = "http://localhost/ReportServer/ReportService2005.asmx";
        rsExec.Url = "http://localhost/ReportServer/ReportExecution2005.asmx";
        byte[] Sendresults = null;
        byte[] bytes = null;
        string historyID = null;
        string deviceInfo = @"<DeviceInfo><Toolbar>False</Toolbar></DeviceInfo>";
        string format = "PDF";
        string encoding = null;
        string mimeType = null;
        string extension = null;
        REWebService.Warning[] warnings = null;
        string[] streamIDs = null;
        string _reportName = @"/FIMO GOF Assets Reports/PURCHASE ORDER";
        REWebService.ExecutionInfo ei = rsExec.LoadReport(_reportName, historyID);
        REWebService.ParameterValue[] parameters = new REWebService.ParameterValue[4];
        parameters[0] = new REWebService.ParameterValue();
        parameters[0].Name = "MVDI_ID";
        parameters[0].Value = lblVendid.Text;
        parameters[1] = new REWebService.ParameterValue();
        parameters[1].Name = "MBRI_ID";
        parameters[1].Value = lblBranch.Text;
        parameters[2] = new REWebService.ParameterValue();
        parameters[2].Name = "MPDI_Date";
        parameters[2].Value = lblDate.Text;
        parameters[3] = new REWebService.ParameterValue();
        parameters[3].Name = "ReportParameter1";
        parameters[3].Value = lblPOId.Text;
        rsExec.SetExecutionParameters(parameters, "en-us");
        Sendresults = rsExec.Render(format, deviceInfo, out extension, out encoding, out mimeType, out warnings, out streamIDs);
        MemoryStream ms = new MemoryStream(Sendresults);


        //To create a PDF
        if (format == "PDF")
        {
            Response.ContentType = "application/pdf";
            Response.AddHeader("Content-disposition", "inline;filename=output.pdf");
            Response.AddHeader("Content-Length", Sendresults.Length.ToString());
        }
        Response.OutputStream.Write(Sendresults, 0, Sendresults.Length);
        Response.OutputStream.Flush();
        Response.OutputStream.Close();

      }
       catch(Exception Ex)
       {
        throw Ex;
        }
   }
4

1 回答 1

1

您可以使用 URL 访问,如下所述:http: //msdn.microsoft.com/en-us/library/ms154040 (v=sql.105).aspx

http://<Server Name>/reportserver?/Sales/YearlySalesSummary&rs:Format=PDF&rs:Command=Render
于 2012-12-27T17:23:10.867 回答