C# 将datetime传递到报表查看器时参数验证失败
因此,我试图使用asp中的reportviewer控件查看远程ssrs报告。该报告采用三个参数-一个nvarchar和两个datetime。在我添加两个datetimes之前,传递单个nvarchar工作得很好,在这一点上我得到了以下错误。所以这肯定有问题。我总是犯下可怕的错误:C# 将datetime传递到报表查看器时参数验证失败,c#,asp.net,exception,reporting-services,parameters,C#,Asp.net,Exception,Reporting Services,Parameters,因此,我试图使用asp中的reportviewer控件查看远程ssrs报告。该报告采用三个参数-一个nvarchar和两个datetime。在我添加两个datetimes之前,传递单个nvarchar工作得很好,在这一点上我得到了以下错误。所以这肯定有问题。我总是犯下可怕的错误: Parameter validation failed. It is not possible to provide valid values for all parameters. (rsParamet
Parameter validation failed. It is not possible to provide valid values for all parameters. (rsParameterError)
尽管传递了所有三个参数的值,但仍会出现这种情况。我猜这是日期字符串中的/字符的问题,所以我尝试用url编码这些字符,但没有用。我可以确认此报告确实从reporting services运行,但我似乎无法从代码中正确传递参数值。建议
我的代码如下
string firstdate = datepicker.Value;
string enddate = datepicker2.Value;
firstdate = HttpUtility.UrlEncode(firstdate);
enddate = HttpUtility.UrlEncode(enddate);
ReportParameter[] parm = new ReportParameter[3];
parm[0] = new ReportParameter("store_name", DropDownList1.SelectedValue);
parm[1] = new ReportParameter("mindate",firstdate);
parm[2] = new ReportParameter("maxdate", enddate);
ReportViewer1.ServerReport.ReportPath = "<REDACTED>";
ReportViewer1.ServerReport.ReportServerUrl = new Uri("http://<REDACTED>/ReportServer");
ReportViewer1.ServerReport.ReportServerCredentials = new ReportServerCredentials("<REDACTED>", "<REDACTED>", "");
ReportViewer1.ProcessingMode = ProcessingMode.Remote;
ReportViewer1.ServerReport.SetParameters(parm);
ReportViewer1.ServerReport.Refresh();
stringfirstdate=datepicker.Value;
字符串enddate=datepicker2.Value;
firstdate=HttpUtility.UrlEncode(firstdate);
enddate=HttpUtility.UrlEncode(enddate);
ReportParameter[]parm=新的ReportParameter[3];
parm[0]=新的ReportParameter(“store_name”,DropDownList1.SelectedValue);
parm[1]=新的报告参数(“mindate”,firstdate);
parm[2]=新的报告参数(“maxdate”,enddate);
ReportViewer1.ServerReport.ReportPath=“”;
ReportViewer1.ServerReport.ReportServerUrl=新Uri(“http:///ReportServer");
ReportViewer1.ServerReport.ReportServerCredentials=新的ReportServerCredentials(“,”,”);
ReportViewer1.ProcessingMode=ProcessingMode.Remote;
ReportViewer1.ServerReport.SetParameters(parm);
ReportViewer1.ServerReport.Refresh();
结果是.rdl文件被破坏了,但我不确定如何破坏。完全重新创建报告似乎解决了这个问题