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 に答える