在ASP.net页面的SSRS报告中正确传递我的参数

时间:2013-02-04 14:40:05

标签: c# asp.net

我非常接近找出我花了几天时间的问题。

我正在尝试将参数传递到ASP.net页面上的SSRS报告。用户在页面上选择2个选项,程序(3个程序的下拉列表)和句点(日期)。

我可以通过但不是我想要的东西。这是用户选择在报告上显示的内容的页面:

        ClientScript.RegisterStartupScript(this.GetType(), "Alert", "alert('Bill Created!');window.open('../demographics/supbillrpt.aspx?prog=fprogram&period=cperiod','_self');", true);

fprogram是:

        SqlParameter param2 = new SqlParameter();
        param2 = command.Parameters.Add("@program", SqlDbType.Char);
        param2.Value = fprogram;

cperiod是一回事,但它是约会。

以下是显示报告的页面背后的代码:

        String sprogram = Request.QueryString[0];
        String speriod = Request.QueryString[1];

        ReportViewer1.ProcessingMode = ProcessingMode.Remote;
        ReportViewer1.Width = 800;
        ReportViewer1.Height = 600;
        IReportServerCredentials irsc = new CustomReportCredentials();
        ReportViewer1.ServerReport.ReportServerCredentials = irsc;
        ReportViewer1.ServerReport.ReportPath = "/sup_billing/Report1";
        ReportViewer1.ServerReport.Refresh();
        ReportParameter p = new ReportParameter("prog", sprogram);                      ReportViewer1.ServerReport.SetParameters(new ReportParameter[] { p });
        ReportParameter p2 = new ReportParameter("period", speriod); ReportViewer1.ServerReport.SetParameters(new ReportParameter[] { p2 });

我得到的是程序是空白的,句点是“cperiod”

我尝试了一些不同的东西让它把它作为一个变量来阅读,但似乎没有任何效果。

如果我将以下内容放入:

ClientScript.RegisterStartupScript(this.GetType(),“Alert”,“alert('Bill Created!'); window.open('../ demographics / supbillrpt.aspx?prog = VEX& period = cperiod', '_self');“,true);

VEX是该下拉列表中的一个项目,将显示,因为我把它放在那里。但是用户不会总是选择VEX,所以我需要使用fprogram变量。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

我假设您的第一个代码片段是您正在使用的实际代码,而不是代码的一般形式的模型。我进一步假设你有一个名为fprogramcperiod的变量。

您需要构建查询字符串以反映您希望传递的确切值。遗憾的是,您不能将要用作值的变量的名称编码,并插入实际值。

所以你的代码应该是这样的:

// I am assuming you're getting your fprogram and cperiod values from controls.  The 
// control names are of course up to you.

string fprogram = ddlProgram.SelectedValue;
string cperiod =  txtPeriod.Text;  // I'm assuming this contains a formatted date.

string queryString = String.Format(
     "../demographics/supbillrpt.aspx?prog={0}&period={1}", 
     fprogram, 
     cperiod);
string script = String.Format(
     "alert('Bill Created!');window.open('{0}','_self');",
     queryString);

ClientScript.RegisterStartupScript(this.GetType(), "Alert", script, true);

希望这有帮助。