在ASP.net页面的SSRS报告中正确传递我的参数
本文关键字:参数 我的 报告 net ASP SSRS | 更新日期: 2023-09-27 17:57:37
我几乎要解决我花了几天时间解决的一个问题了。
我正试图将参数传递给ASP.net页面上的SSRS报告。用户在之前的页面上选择2个选项,即程序(3个程序的下拉列表)和周期(日期)。
我可以通过一些东西,但不是我想要的。这是用户选择在报告上显示内容的页面:
ClientScript.RegisterStartupScript(this.GetType(), "Alert", "alert('Bill Created!');window.open('../demographics/supbillrpt.aspx?prog=fprogram&period=cperiod','_self');", true);
f程序是:
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('票据已创建!');window.open('../populations/supbillrpt.aspx?prog=VEX&period=cperiod','_self');",true);
VEX是下拉列表中的一个项目,它会显示出来,因为我是这样放的。但是用户不会总是选择VEX,所以我需要使用fprogram变量。有什么建议吗?
我假设您的第一个代码片段是您正在使用的实际代码,而不是代码的一般形式的模型。我进一步假设您有称为fprogram
和cperiod
的变量。
您需要构建查询字符串以反映您希望传递的确切值。不幸的是,您不能对要用作值源的变量的名称进行编码,并插入实际值。
所以你的代码应该是这样的:
// 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);
希望这能有所帮助。