代码之家  ›  专栏  ›  技术社区  ›  Phil

SSRS本地模式报告零显示为空白

  •  1
  • Phil  · 技术社区  · 16 年前

    我有一个由对象数据源填充的SSRS(SQL Server Reporting Services)RDLC本地模式报告。但是,数据库中的数据返回为0,但报告显示为空。

    我的数据源是从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”,并且这些值正被转换为小数对象(原始的SQL Server字段是money类型)。

    然后,我通过以下方式将其绑定到ReportViewer控件:

    ReportViewerControl.LocalReport.DataSources["ObjectDataSource"].Value = results;
    

    在报表中正常使用它(我添加了数据源并使用“网站数据源”面板将值拖到一个表中),如前所述,它不显示“0”,只是空白。

    我在使用Visual Studio 2008时假定ReportViewer 2005控件(Microsoft不提供本地模式Tablix:)并查询SQL Server 2008 x64标准实例。

    有人知道为什么它不显示零吗?

    菲尔

    2 回复  |  直到 13 年前
        1
  •  1
  •   Phil    16 年前

    如果您在零值上有一个格式表达式“说””,它将使其为空。只是删除了零值可能出现的某些情况下的格式表达式及其修复。

        2
  •  0
  •   user1288368    13 年前

    如果要保留格式,可以将格式表达式更改为测试零。

    = IIF(Fields!MyField.Value <> 0,"###,###,###.##","")
    

    这对我很有用。