简体   繁体   中英

C#, ReportViewer: How to make Report Path a URL parameter

I am working on a solution that uses Report Viewer to access SSRS reports in our server. Currently the server URL and the repot path, are values stored in the Web.config file.

Web.config  

    <add key="ReportServerUrl" value="https://sqlssrs/reportserver"/>
    <add key="ReportPath" value="/group/type/report-name"/>

Then these values are mapped in the ReportViewer.aspx.cs code behind.

ReportViewer.aspx.cs

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            try
            {

                // Add the Reporting Server URL  
                rvSiteMapping.ServerReport.ReportServerUrl = new Uri(ConfigurationManager.AppSettings["ReportServerUrl"].ToString());

                //Add the Report Path
                rvSiteMapping.ServerReport.ReportPath = ConfigurationManager.AppSettings["ReportPath"].ToString();

                rvSiteMapping.ServerReport.Refresh();
            }
            catch (Exception)
            {

            }
        }
    }

I was asked to try to make a change that will allows us to pass the Report Path value, as a query string parameter.

I am not sure how to accomplish this task. I tried to do the following.

 rvSiteMapping.ServerReport.ReportServerUrl = new Uri("http://sqlssrs/reportserver?pReportPath=/group/type/report-name");

 rvSiteMapping.ServerReport.ReportPath= HttpUtility.ParseQueryString(rvSiteMapping.ServerReport.ReportServerUrl).Get("pReportPath");

That code does not work. It gives me an error that reads.

Error   CS1503  Argument 1: cannot convert from 'System.Uri' to 'string'

Would it be possible to get some instruction on how to be able to accomplish this task? I am running the report within Visual Studio 2015, I am thinking I also need to set the URL in the project configuration, but I am not sure about that either.

I appreciate any direction on how to program this, any articles, examples, whatever can aid me to complete this task.

Thank you for sharing your experience.

Erasmo

Report server should contain the URL and the path should contain the path starting with '/'.

I think the correct way to do this is:

rvSiteMapping.ServerReport.ReportServerUrl = new Uri("http://sqlssrs/reportserver"); rvSiteMapping.ServerReport.ReportPath= "/group/type/report-name"

Reference: https://docs.microsoft.com/en-us/previous-versions/ms252075(v=vs.140)?redirectedfrom=MSDN#how-to-configure-reportviewer-for-remote-processing

You can use Request.QueryString["pReportPath"] to retrieve the query value.

Try:

// Add the Reporting Server URL  
rvSiteMapping.ServerReport.ReportServerUrl = new Uri(ConfigurationManager.AppSettings["ReportServerUrl"].ToString());

//Add the Report Path
rvSiteMapping.ServerReport.ReportPath = Request.QueryString["pReportPath"];

Then navigate your browser to ReportViewer.aspx?pReportPath=/group/type/report-name

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM