我有一个SSRS(SQL Server Reporting Services)RDLC本地模式报告,该报告由对象数据源填充。但是,数据库中的数据返回为0,但报告显示为空白。
我的数据源是List<>从SQL Server查询填充的“ReportData”类型。
public class ReportData
{
public object column1 { get; set; }
public object column2 { get; set; }
public object column3 { get; set; }
public ReportData(object column1, object column2, object column3)
{
this.column1 = column1;
this.column2 = column2;
this.column3 = column3;
}
}
像这样:
List<ReportData> results = new List<ReportData> {};
while (dr.Read())
{
results.Add(new ReportData(dr[0], dr[1], dr[2], dr[3]));
}
通过调试我确认列表中填充了值“0”并且它们被转换为Decimals对象(原始SQL Server字段是货币类型)。
然后我通过以下方法将其绑定到ReportViewer控件:
ReportViewerControl.LocalReport.DataSources["ObjectDataSource"].Value = results;
只需在报告中正常使用它(我添加了数据源并使用“网站数据源”面板将值拖到表格上),如上所述它不显示“0”但只是空白。
我正在使用Visual Studio 2008,我假定ReportViewer 2005控件(Microsoft不提供本地模式tablix :()并查询SQL Server 2008 x64标准实例。
任何人都知道为什么它没有显示零?
菲尔
答案 0 :(得分:1)
如果您的格式表达式为“###,###,###。##”,则在零值上显示为空白。刚删除了可能发生零值及其修复的特定情况的格式表达式。
答案 1 :(得分:0)
如果要保留格式,可以更改FORMAT表达式以测试零。
= IIF(Fields!MyField.Value <> 0,"###,###,###.##","")
以上对我有用。