通常的方法是遍历参数集合并判断每个参数的.Dependents
.
如果您已经知道参数,无论是通过判断RDL还是通过您自己的应用程序配置,则可以使用SetParameters()
将值发送到服务器端报告:
ServerReport serverReport = new ServerReport();
serverReport.ReportServerUrl = new Uri("localhost/testserverreport");
serverReport.ReportPath = "test/test report";
var parameterInfos = serverReport.GetParameters();
... resolve your parameter values
List<ReportParameter> parameters = new List<ReportParameter>();
var parameter1 = new ReportParameter();
parameter1.Name = "parametername"; // get the name from parameterInfos
parameter1.Values.Add("1"); // your value here
serverReport.SetParameters(parameters.ToArray());
这类代码的唯一奇怪之处在于,我通常会通过报表查看器控件设置服务器报表,而不是直接实例化ServerReport
,这可能是您出错的地方
reportViewer1.ProcessingMode = Microsoft.Reporting.WebForms.ProcessingMode.Remote;
reportViewer1.ServerReport.ReportServerUrl = new Uri("http://localhost:portno/ReportServer"); // Report Server URL
reportViewer1.ServerReport.ReportPath = "test/test report"; // Report Name
List<ReportParameter> parameters = new List<ReportParameter>();
var parameter1 = new ReportParameter();
parameter1.Name = "parametername"; // get the name from parameterInfos
parameter1.Values.Add("1"); // your value here
reportViewer1.ServerReport.SetParameters(parameters.ToArray());
如果您根本没有使用报表查看器控件,但仍然希望呈现服务器端,那么您可以通过url参数传递参数,而不是直接通过ServerReport
传递.