我有一个带有Infragistics报告的ASP.NET WebForms项目(VS 2013中的v14.1,.NET Framework 4.0)。我在报告中有两个数据源(.igr文件)。第一个是报告数据,第二个是公司徽标,都存储在SQL Server中。
我的第二个数据源使用查询:SELECT LogoImage FROM dbo.CompanyLogo WHERE CompanyId = @CompanyId
。 CompanyId
参数是基于第一个数据源中的成员/字段的动态值列表。
徽标显示在标题中,Image属性设置为=First(Fields.LogoImage, DataSources.CompanyLogoDataSource)
。问题是加载的图像始终使用CompanyId
参数的默认值。如果我没有设置默认值,则报告不会加载并显示错误"报告参数CompanyId的值无效。"在浏览器中。
但是,我知道CompanyId是有效的,因为它在报告的其余部分使用,我可以验证它的价值。另请注意,第一个数据源中只加载了一条记录(基于SQL视图),但此时在视图中包含图像(字节数组)是不可行的。我该如何解决这个问题?
答案 0 :(得分:0)
显然你不能以我希望的方式级联参数。您仍然必须在创建报告查看器时设置其值。
$(function () {
$("#viewer").igReportViewer({
width: 1600,
height: 1200,
contentType: 'application/json; charset=utf-8',
parameters: [{ Key: 'ReportId', Value: '<%= _reportId %>' }],
renderSettings: {
definitionUri: '<%= _definitionUri%>',
serviceEndpointUri: serviceEndpoint
}
});
});
我已经将参数ReportId
用于返回CompanyId
的第一个数据源。而不是将额外的CompanyId
添加到上面的参数字典中(这将不得不以某种方式在代码中设置,然后发送回用于第二个数据源的函数),我决定创建一个公共IEnumerable函数返回基于ReportId
的徽标。第二个数据源现在使用此函数以及最初提供的ReportId
。