RDLC报表小结

针对vs2008,Windows Forms应用程序。

数据源

1.尚未为数据源 XXX 提供数据源实例。 

 原因:this.reportViewer1.LocalReport.DataSources中找不到Name==XXX的参数 或者 Name==XXX参数的参数值为null。

解决方法: this.reportViewer1.LocalReport.DataSources.Add(new Microsoft.Reporting.WinForms.ReportDataSource("XXX", (DataTable 或 实现IList的集合)));

设计

1.显示下级节点。例如,显示Doctor.Depart.Name。

解决方法: Fields!Doctor.Value.Depart.Name。

注意:如果以这种表达式显示数据是不会有问题的,但是,如果在报表中启动排序时,无论排序表达式是什么,都会失败(显示错误号)。原因不明。

2.每页最多只显示N条数据。

解决方法:添加组,分组表达式为 =Int((RowNumber(Nothing) - 1) / N),取消包括组头和包括组尾,勾选在结尾处分页。

3.内置的Switch语句似乎没有Default分支

例如:=Switch(Fields!Prestype.Value = 1, "西药", Fields!Prestype.Value = 2, "中药", (没有default,这里填什么呢?), "其他") 

解决方法:变通一下:=Switch(Fields!Prestype.Value = 1, "西药", Fields!Prestype.Value = 2, "中药", Fields!Prestype.Value <> 2, True, "其他")

4.更改文档结构图根节点文本

解决方法:设置this.reportViewer1.LocalReport.DisplayName属性

5.显示n×m矩阵(Matrix)

解决方法:将矩阵的列组分组表达式设为 =RowNumber(Nothing) mod m,行组分组表达式设为 =Int((RowNumber(Nothing) - 1) / m)。

注意:在VB中,CInt函数和Int函数是不同的。前者是取某数的四舍五入值,后者直接取整数部分。 

6.展开文档结构图树形结构

解决方法:在报表呈现完成之后,获取文档结构图树形结构的顶级节点(其实是TreeNode),调用Expand方法展开它。

void reportViewer1_RenderingComplete(object sender, Microsoft.Reporting.WinForms.RenderingCompleteEventArgs e) {
    var rsDocMap 
= typeof(Microsoft.Reporting.WinForms.ReportViewer).GetField("rsDocMap", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance).GetValue(this.reportViewer1);
    var node 
= rsDocMap.GetType().GetProperty("TopNode").GetValue(rsDocMap, null);
    
if (node != null) {
        ((TreeNode)node).Expand();
    }
}

 7.引用其它报表项(例如其它文本框)的内容

解决方法:ReportItems!textbox1.Value

8.在Matrix中设置了某组的可见性为“由其他报表项确定”时,务必将当前组的初始可见性设为隐藏,否则回永久停在生成报表界面上。 

9.IIF函数错误原因之一

IIf(Fields!a.Value = "true", 1.2, 0) 将生成错误,因为1.2(这里是decimal)和0(int32)的数据类型不一致

解决方法:添加类型转换: IIf(Fields!a.Value = "true", 1.2, System.Convert.ToDecimal(0)) 

版本历史

2010-11-02 发布 

2010-11-03 添加设计4 、5

2010-11-15 添加设计1的注意部分 

2010-12-15 添加设计6 

2011-01-07 添加设计7 

2011-01-19 添加设计8 

2012-05-14 添加设计9  
原文地址:https://www.cnblogs.com/ChenZB/p/1866972.html