我非常接近找出我花了几天时间的问题。
我正在尝试将参数传递到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变量。有什么建议吗?
答案 0 :(得分:0)
我假设您的第一个代码片段是您正在使用的实际代码,而不是代码的一般形式的模型。我进一步假设你有一个名为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);
希望这有帮助。