如何动态设置具有依赖关系的ServerReport(Microsoft.Reporting.WebForms.ServerReport)参数以填充另一个参数的列表?我直接从RDL检索参数,但有些参数具有依赖关系,除非解决了依赖关系,否则不会填充列表.

ServerReport serverReport = new ServerReport();
serverReport.ReportServerUrl = new Uri("localhost/testserverreport");
serverReport.ReportPath = "test/test report";

var parameters = serverReport.GetParameters();

推荐答案

通常的方法是遍历参数集合并判断每个参数的.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传递.

Csharp相关问答推荐

ListaryImportProperty的默认DllImportSearchPathsProperty行为

图形.DrawString奇怪异常的字距调整

注册通用工厂的C# Dep注入

为什么我不能更改尚未设置的模拟对象属性的值?

向类注入一个工厂来创建一些资源是一个好的实践吗?

C#相同名称的枚举方法和normal方法,参数类型不同

应该使用哪一个?"_counter += 1 OR互锁增量(ref_counter)"""

编写DataAnnotations自定义验证器的多种方法

属性getter和setter之间的空性不匹配?

如何将Kafka消息时间戳转换为C#中的日期和时间格式?

HttpConext.Request.Path和HttpConext.GetEndpoint()之间的差异

JsonSerializer.Deserialize<;TValue>;(String,JsonSerializerOptions)何时返回空?

如何使用新的Microsoft.IdentityModel.JsonWebToken创建JwtSecurityToken?

应用程序重新启动后,EFCore列表的BSON反序列化错误

Azure函数中实体框架核心的依赖注入

每个http请求需要60秒,为什么?

ReadOnlyMemory访问基础索引的替代方案

与Visual Studio 2022中的.NET框架相比,如何在.NET Core 6中获取错误输出的窗口句柄

使用c#中的Windows 10关机消息

为什么使用User.IsInRole()总是返回FALSE?